前言:小伙伴们大家好,上一次我们讲解了三子棋的游戏实现今天我们一起来学习扫雷游戏的实现。
开始的设置过程和三子棋的一致,这里就不再过多赘述了。直接上代码
![](https://img-blog.csdnimg.cn/img_convert/7a49916bccb680d884483b436ee5e815.png)
设计游戏
初始化数组
我们需要在一个棋盘上布置雷,在另一个棋盘上存放雷的信息。所以在实现扫雷游戏时我们需要两个二维数组来实现,为了方便实现我们可以把这两个二二维数组设置为同样大小。假设棋盘设置为9*9大小。但是为了防止在排查雷的时候出现数组越界的情况,所以初始化时要把数组设置成11*11大小。布置雷的棋盘最开始全用字符0来初始化,而存放雷的信息的数组用字符*来初始化。用函数InitBoard函数来初始化数组,与三子棋一致数组声明放在game.h中,数组的具体实现放在game.c中。同时为了好初始化数组,把‘0’和‘*’分别传过去并统统用char set接收
![](https://img-blog.csdnimg.cn/img_convert/0251286f710f24c5d7816040d3fb77ca.png)
![](https://img-blog.csdnimg.cn/img_convert/d24dc4fa11ca76349d449c8826a8b7f7.png)
![](https://img-blog.csdnimg.cn/img_convert/8997de2b4afc0a219af06d281702d90d.png)
打印数组
初始化之后进行打印来看看效果,打印就只需要把数组遍历一下即可。用DisplayBoard函数来实现打印
初始化为了防止数组越界用11*11的大小,但此时打印室还需要11*11吗?不需要的,我们只要9*9的大小即可,所以在传参时传过去ROW,COL即可
![](https://img-blog.csdnimg.cn/img_convert/384ce7cddda1e9b0ceb9b120820c69fa.png)
![](https://img-blog.csdnimg.cn/img_convert/c29c1d9c6fb047716c192257cf573aac.png)
![](https://img-blog.csdnimg.cn/img_convert/c72e8cbb5df4bfd229ad421bbcf758dc.png)
ctrl+f5让我们一起来看看打印的结果吧
![](https://img-blog.csdnimg.cn/img_convert/124199d3fa1643bdd46c3b33519e9505.png)
达到了想要的效果,但似乎不太好看。此时我们可以进行小小的改进加入行号和列号
![](https://img-blog.csdnimg.cn/img_convert/8f2467450403beec651ef0210c4764a8.png)
改进后的打印效果
![](https://img-blog.csdnimg.cn/img_convert/aea5798cf2d91aeb190fd81e259f0399.png)
这个就比之前的看起来更加美观
设置雷
(๑‾ ꇴ ‾๑)好哒终于来到了布置雷的部分。还记得我们刚开始设置的两个二维数组吗?char mine数组是为了布置雷,char show数组是为了存放雷的信息。这里设置雷,要用到哪个数组呢?没错,就是char mine数组用FineMine函数来进行布置雷。在开始设置雷之前我们需要先确定雷的数量,同时雷的数量又是容易更改的。所以我们需要在game.h中用define来定义雷的数量同时在game.c中用count来接收。同时利用rand函数来随机设置x,y但又要使设置坐标符合数组的行列,所以x=rand()%row+1,y=rand()%col+1。
![](https://img-blog.csdnimg.cn/img_convert/a24562a81937faaa807098fac49bed9e.png)
![](https://img-blog.csdnimg.cn/img_convert/0e25c0cc095a055ffad8ab330cf8f20f.png)
![](https://img-blog.csdnimg.cn/img_convert/c4615465ed85d56d40c7ec9311bf2e30.png)
在打印一下下看看效果吧
![](https://img-blog.csdnimg.cn/img_convert/44f06fd5a93527e6c8a5bfc64a2e3736.png)
排查雷
排查雷的话先是在mine数组中进行排查,排查到雷就打印出布置雷的位置并提示玩家游戏失败。没有排查到雷返回雷周围八个坐标的值把排查结果放在show数组中。简单分析即可,上代码
![](https://img-blog.csdnimg.cn/img_convert/b422957f8fbebc502eb53db40a5a4997.png)
![](https://img-blog.csdnimg.cn/img_convert/012d934eb72d4bcc8e4b7899a5bfd15f.png)
![](https://img-blog.csdnimg.cn/img_convert/451d8694bdc69c50a1719287c6ba526d.png)
测试结果
为了方便好测试,将EASY_COUNT的值设置为80,来看看效果吧
![](https://img-blog.csdnimg.cn/img_convert/9cdf974d97ee3d9e926fa224071d5fb8.png)
结束
以上就是扫雷游戏实现的所有步骤,创作不易还望老铁们点个关注,么么哒
![](https://img-blog.csdnimg.cn/img_convert/fdda3a92f088725386f05a800927e428.png)