扫雷游戏,想必大家都玩过了,那如何用c语言实现一个扫雷游戏呢
首先我们要知道扫雷游戏的机制
如图所示,这里有10个雷,点击一个方块,就会显示周围有几个雷
像图中的2,就是显示这个方块周围有两个雷。
然后就是雷是随机分布的,那么我们就要用到 rand 随机函数,但是 rand 是伪随机,所以我们要配和 srand 实现跟随时间产生随机数。
基础原理已经理解,接下来就开始布局把
为了方便起见,建议建立一个头文件,和两个源文件。
test.c负责运行;game.c负责函数的表达;game.c负责函数的声明
那么我们首先在test.c里构建基础的游戏交互界面把
为了运行代码的简洁,我们可以建立一个游戏交互界面的函数,运行如下
好,简单的交换界面我们已经建立完毕,开始设计游戏内容了。
首先,要实现的就是在输入1开始游戏后会弹出一个棋盘,输入0就会弹出结束游戏,已经输入其他就会显示输入无效,这里用到switch()函数
接下来就是设计棋盘了,在case1加入一个game()函数,函数内容就是打印棋盘
那如何打印棋盘呢,大家看之前的扫雷图不知道有没有联想到二维数组呢,我们要用二维数组打印棋盘,
二维数组定义好了,为了棋盘大小可以更方便的修改,决定使用#define,
之前建立的game.h 就派上用场了。
可以用#define 声明字符,将想要的值设置好,ROW表示行,COL表示列
ps:调用本地头文件要用""
将棋盘设计好后,就要打印棋盘和布置雷了
我们先声明一个打印棋盘的函数
然后设计下外观,使棋盘显示横坐标
再之后就是显示纵坐标的同时,打印棋盘内容
接下来就是布置雷了
布置雷,这里用到rand伪随机,为了实现真随机,我srand随时间变换产生新的随机数,然后取它的个位数,为了避免0的存在所以+1。
EASY_COUNT表示游戏难度,有多少个雷
这里我们布置了10个雷
接下来是排查雷,为了实现排查一个雷后显示周围有多少雷的效果,我们要用到一个函数
最好就是排查雷的代码
void FineMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
int x, y;
int win = 0;
while (win < row * col - EASY_COUNT)
{
printf("请输入排查雷坐标:");
scanf("%d %d",&x,&y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("你被炸死了!!! \n ");
DisplayBroad(mine, ROW, COL);
break;
}
else
{
int count = GetMineCount(mine, x, y);
show[x][y] = count + '0';
DisplayBroad(show, ROW, COL);
win++;
}
}
else
{
printf("非法输入,请重新输入\n");
}
}
if (win == row * col - EASY_COUNT)
{
printf("排雷成功!!!");
DisplayBroad(mine, ROW, COL);
}
}
运行结果,完事