废话少说,直接上主思路代码
一,主思路代码
int main()
{
int input = 0;
do
{
menu();
printf("请输入选择:\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
}
} while (input);
return 0;
}
二,其中game()主思路
void game()
{
//初始化棋盘
initboard();
//布雷
srand((unsigned int)time(NULL));
setmine();
//打印棋盘
print_playerboard();
//print_mineboard();
//排查地雷
while (stepcount)
{
int x, y;
printf("请输入您要排查的坐标(行 列):\n");
scanf("%d%d",&x,&y);
if (x > 0 && x <= 9 && y > 0 && y <= 9)
{
if (mineboard[x][y] != '1')
{
//统计周围地雷数
//playerboard[x - 1][y - 1] = count(x, y);
//显示邻近无雷坐标格
sign(x,y);
//清理屏幕
clearscreen();
//打印棋盘
print_playerboard();
stepcount--;
}
else
{
printf("你被炸死了!\n");
return;
}
}
}
printf("胜利!!!\n");
}
三,在其中函数的实现中,本帅b认为较出彩的代码(雷排查和胜利)
附近无雷格的显示函数sign() 以及 以步数stepcount为依据的胜利的实现
void sign(int x,int y)
{
if (x > 0 && x <= 9 && y > 0 && y <= 9)//局限显示范围,设置递归结束点
{
if (playerboard[x - 1][y - 1] == '*')//确保为未探索点
{
char minearound = count(x, y);
if (minearound == '0')
{
playerboard[x - 1][y - 1] = '0';//显示
stepcount--;
sign(x - 1, y);
sign(x + 1, y);
sign(x, y - 1);
sign(x, y + 1);
}
else
{
playerboard[x - 1][y - 1] = minearound;//显示
stepcount--;
}
}
}
}
有疑惑或者建议或者想看完整代码可评论
标签:递归,int,代码,C语言,排查,game,&&,input,控制台 From: https://blog.csdn.net/2402_86078781/article/details/144460403