一、game函数
首先我们要布置雷,mine数组就是,show数组是用来排查雷的,简而言之,show数组展示给玩家看,mine数组相当于内部人员看到的。
二、InitBoard函数是用来初始化数组的
我们将‘1’作为雷,‘0’是没有雷,‘*’是玩家开始游戏时,所看到的,其是未知的。
我们需要将mine数组全初始化为‘0’,show数组全初始化为‘*’
三、 SetMine函数
此时我们要布置雷了,因为是简单版的扫雷,所以我们布置10个雷。为了方便改变雷的数量时方便,我们定义一个宏
rand是一个1--32767的伪随机数,我们用9对它取余,它的结果是0--8,因此+1是1--9,我们的坐标也是1--9,当随机数的位置是‘0’时,代表这个地方没有雷,我们可以布置雷,因此让这个位置变为‘1’。
四、 DisplayBoard函数
首先,第一个for循环我们打印的是坐标
第二个for循环里打印了列号,里面嵌套的打印,让游戏有了一个雏形。
五、 FindMine函数
此函数是用来让玩家排查雷的。
我们一共是9x9=81个坐标,一共十个雷,因此我们要选71次才能获得胜利,因此while循环括号内是row*col-EASY_COUNT
里面有一个GetMineCount函数,因为我们选完坐标后,要显示出附近有多少雷,此函数就是用来计算的,我们将中间的坐标设为(x,y)其余就是简单的计算。
由ASCII码我们可知,‘1’与‘0’之间相差1,‘2’与‘0’之间相差2,我们要将字符转变为数字,因此每个都要减去‘0’,一共八个。
此时我们的扫雷游戏就完成了。
整体的代码如下
test.c中
game.c中
game.h中