今天教大家一个简单的扫雷小游戏,首先我们需要创建一个扫雷的界面方便我们游玩,比如这个样子。
void menu()
{
printf("**********************************\n");
printf("********** 1. play ********\n");
printf("********** 0. exit ********\n");
printf("**********************************\n");
}
接下来我们需要一个整体的游戏逻辑框架,比如说我们输入1时可以玩游戏,输入0就退出游戏,输入其他的字符时就提示我们如何才可以玩游戏,我们就可以用一个switch语句来达到我们想要的目的。而当我们结束一场游戏时还想加入下一场,那么我们就可以用一个do while的循环来实现我们的想法。比如像下面这样。
int main()
{
int input = 0;
do
{
menu();
printf("请选择 >");
scanf("%d", &input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
} while (input);
return 0;
}
这个时候,我们就可以开始构思我们的游戏部分该如何设计了。
首先我们会想到要设计一个9*9的棋盘,这里肯定是要定义一个9*9的数组。然后采用随机函数来把雷埋进去,最后点一下格子,就会看到一个数字,数字上显示的是这个格子周围有几个雷。那么聪明的小伙伴们肯定想到要去遍历这个格子周围的八个格子,然后去数出有几个雷,最后再打印在格子上就可以完成我们的游戏设计了。但是如果按照上述设计就会出现两个问题。第一个问题是,我们如何在一张表中,既打印雷又可以打印出周围雷的个数呢?所以这里我们会打印两个表来存放我们的雷和周围雷的个数。第二个问题是,如果我们遍历棋盘边缘的格子时,它的周围就不足八个格子,如果分开讨论也会使问题变的复杂,所以我们这里使用11*11的格子,这样既满足了