扫雷的设计及实现(2)

27 阅读2分钟

一、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中