嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
该项目基于VS2013开发,基本还原了windows自带的扫雷游戏的全部功能
//清除周围没有地雷砖块周围的砖块
void CmineDlg::Clear(int number)
{
int x,y;
stack->mineList[stack->top] = number;
stack->top ;
while((stack->top-stack->end)>0)
{
x = stack->mineList[stack->end] / but_y;
y = stack->mineList[stack->end] % but_y;
if(x-1>=0 && y-1>=0)
{
number = (x-1)*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(x-1>=0)
{
number = (x-1)*but_y y;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(x-1>=0 && y 1<but_y)
{
number = (x-1)*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(y-1>=0)
{
number = x*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(y 1<but_y)
{
number = x*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(x 1<but_x && y-1>=0)
{
number = (x 1)*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(x 1<but_x)
{
number = (x 1)*but_y y;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
if(x 1<but_x && y 1<but_y)
{
number = (x 1)*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
}
stack->end ;
}
}
//双击时清除周围砖块
void CmineDlg::DoubleClear(int number)
{
int x,y;
stack->mineList[stack->top] = number;
stack->top ;
while((stack->top-stack->end)>0)
{
x = stack->mineList[stack->end] / but_y;
y = stack->mineList[stack->end] % but_y;
if(x-1>=0 && y-1>=0)
{
number = (x-1)*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0) //如果该砖块周围没有地雷就进入队列
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2) //如果其中有地雷就游戏结束
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2) //如果其中插旗错误就游戏结束
{
GameOver();
}
}
if(x-1>=0)
{
number = (x-1)*but_y y;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(x-1>=0 && y 1<but_y)
{
number = (x-1)*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(y-1>=0)
{
number = x*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(y 1<but_y)
{
number = x*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(x 1<but_x && y-1>=0)
{
number = (x 1)*but_y y-1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(x 1<but_x)
{
number = (x 1)*but_y y;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
if(x 1<but_x && y 1<but_y)
{
number = (x 1)*but_y y 1;
if(mineFlag[number]==0 && MineCount(number)==0)
{
stack->mineList[stack->top] = number;
stack->top ;
}
if(mineNum[number]==1 && mineFlag[number]!=2)
{
mineFlag[number] = 0;
GameOver();
}
if(mineNum[number]==0 && mineFlag[number]==2)
{
GameOver();
}
}
stack->end ;
}
}