基本信息
源码名称:基于MFC的扫雷游戏
源码大小:86.05M
文件格式:.zip
开发语言:C/C++
更新时间:2020-02-12
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 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 ;
}
}