实现这个游戏,我们需要用到多文件的形式来完成。其中 text.c文件写游戏的测试逻辑,game.c文件中写游戏中函数的实现等,game.h中写游戏需要的数据类型和函数声明等。
首先,游戏开始前,我们要先打印一个游戏选单,来确定玩游戏,或者退出游戏,这时我们就需要自定义一个函数来完成,用menu()来完成,我们通过选择1 或者 0,来确认,当然如果我们选择了别的数,就需要提醒他,选择错误,让他重新输入,这时就需要用到swtich语句了。
代码如下:
通过选择游戏之后,我们通过game()函数来实现游戏,扫雷游戏,我们首先要打印9x9的棋盘,但是为了防止后面统计雷的时候不准确,因为我们玩过扫雷游戏的都知道,我们选择一个地方没有雷的话,他就会统计周围一圈雷的个数,所以我们弄一个11x11的数组来,但是我们只会打印9x9的。在设置这个数组的大小的过程中,我们会用到一个小办法,用define来定义他的行和列,这样,今后修改扫雷游戏布局的大小就会简便很多。然后我们用两个二位数组,一个全部初始化为'0',一个全部初始化为'*',其中,这个全部为‘0'的数组是用来之后设置雷用到,然后这个全部是’*‘的就是用来给扫雷玩家看的,这时,我们通过InitBoard()这个自定义函数来实现初始化
代码如下:
我们想要同时初始化两个数组的时候,我们在传参的过程中,把想要初始化的值给写上,就可以完成两个数组的初始化,当然,我们也可以打印一下棋盘来看看是否初始化成功,这里就会用Dispaly()这个自定义函数来实现打印看看。
代码如下:
但让,为了使玩家们能更清楚的获得坐标,我们就把行和列给打印出来。
接下来就开始到布置雷的过程了,我们会用到之前的那个随机数生成的函数rand()用来生成1--9的随机数。然后我们还是用define来定义雷的个数,用SetMine()自定义函数来实现。
代码如下:
我们用到while循环,布置雷成功一次,count就减减,直到十个雷布置完成,就退出循环。
最后就是排查雷和判断输赢。我们用FindBoard来实现。
代码如下:
我们会让用户输入两个值,刚好是坐标来排雷,如果刚好坐标是雷,游戏结束,我们就把雷的分布图打印给他看,当然,如果没有雷,我们就要统计他周围的个数。我们用GetMine()这个函数来实现。
代码如下
我们直接用输入地址,周围的8个地址相加然后-8x'0’的个数来得出,然后后面在加上字符0,这样就能得到个数。
最后判断赢,还是在Find函数里面,刚好这个数组是9x9就有81个元素在加上10个雷,我们只要小于9x9-10,这样就能达到赢的条件。
最后完整代码如下:
text,c文件
game.h文件
game.c文件
这两个.c文件都需要用#include"game.h"来包含头文件。