扫雷游戏想必各位都不陌生,今天我将用C语言代码实现简易版的扫雷游戏。
目录
函数封装
测试用源文件:test.c
1.菜单显示
为了方便玩家选择,首先设计一个menu函数来提示,代码实现很简单:
void menu()
{
printf("############################\n");
printf("###### 1.game ######\n");
printf("###### 0.eixt ######\n");
printf("############################\n");
}
运行效果大概是下面的样子:
由于要保证游戏的可持续性,故我们用一个do while语句,并设置一个input的变量来接收玩家输入的选择,当input==0时循环结束,也即游戏结束,代码实现:
int main()
{
int input = 0;
do
{
menu();
printf("请选择:\n");
scanf("%d", &input);
switch (input)
{
case 1:
//进行游戏
printf("game\n");
//game();
break;
case 0:
//退出游戏
printf("游戏结束,程序退出\n");
break;
default:
//输入非法
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
在这里我们为了测试代码的正确性,就先在游戏项打印一个game,运行效果如下:
可见代码对于每种情况都有相应的反应,确保的代码的健壮性。
2.game()函数的实现
那么接下来我们就来对game()函数进行实现。
首先要定义一个char型的二维数组来存放雷,但是我们不能直接将这个数组打印出来,不然的话玩家就可以看着雷来排了,所以还要定义一个展示用的char型二维数组,初步假定是用99的棋盘存放,但是我们在排查雷的时候要访问该元素周围的9个数组元素,如果用99的数组则会越界访问,所以我们在声明数组的时候应该将数组的行和列各扩大2行(列)
//存放雷
char mine[ROWS][COLS];
//展示棋盘
char show[ROWS][COLS];
我们假设mine数组中1代表雷,0代表非雷;show数组中用*作为棋盘掩盖信息。那么接下来就需要初始化扫雷所需要的棋盘了:<