void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
int static x = 0;//修改静态局部变量
int static y = 0;
int static win = 0;
while (win<row*col-EASY_COUNT)
{
printf("请输入排查的坐标\n");
scanf("%d%d",&x,&y);
if(x>=1 && x<=row && y>=1 && y<=col)
{
//坐标合法
//1.踩雷
if(mine[x][y] == '1')
{
printf("很遗憾,你被炸死了\n");
DisplayBoard(mine,row,col);
break;
}
//没踩到雷
else
{
cheak(mine,show,ROW,COL,x,y,win);
}
}
else
{
printf("坐标非法,请重新输入");
}
}
if(win == row*col - EASY_COUNT)
{
printf("恭喜你赢了\n");
DisplayBoard(mine,row,col);
}
}
void cheak(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col,int x,int y,int win)
{
//计算x,y坐标周围有几个雷
int count = get_mine_count(mine,show,x,y);
if (count = 0)
{
show[x][y] = ' ';
cheak(mine,show,row,col,x-1,y-1,win);
cheak(mine, show, row,col,x, y-1, win);
cheak(mine, show,row,col,x+1, y-1, win);
cheak( mine, show,row,col, x-1, y, win);
cheak( mine, show, row,col, x+1,y, win);
cheak( mine,show, row,col,x-1, y+1, win);
cheak( mine,show,row,col,x, y+1,win);
cheak( mine,show, row,col,x+1, y+1, win);
win++;
}
else
{
int count = get_mine_count(mine,show,x,y);
show[x][y] = count + '0';
}
}
在做完FineMine后
增加了cheak函数
针对一个周围没有雷的格子拓展的函数
可以一直延伸到有扫雷信号的地方停止