0.前言:
实现的只是非常简单的一个扫雷游戏,没有过多的功能,后续会加,分享出来也是想大家能提供一些思路,下面我会介绍大概怎么写扫雷的一个过程,还有整体思路。
1.扫雷游戏的框架:
菜单—>棋盘的存储—>初始化棋盘—>打印棋盘—>设置雷(一局游戏只有设置一次)—>排查雷。
注意:下面代码中的宏定义:
2.菜单:
写一个菜单其实很简单,没有那么复杂,首先游戏上来会先给出菜单,然后在判断是否进行游戏,也就是是否执行游戏逻辑的循环,因为你不可能一次就玩通关了,而且也不确定你多少次能结束循环,也就是通关,所以这里可以用C语言里的do while语句加上switchu语句把基本菜单框架搭出来。
下面给出代码示例:
菜单函数:
效果演示:
3.棋盘的存储:
想要数据在,那就要把数据存储起来,这里我们用二维数组来存储,而且游戏逻辑写在一起很难维护,所以我们封装一个game()函数把要写的功能放里面。
代码示例:
创建两个二维数组是为了方便计算,增加一些效率。一个是用来显示给用户看的,另一个是来存放炸弹的。
为什么创建11*11的二维数组,因为当后面要排查雷的时候会计算雷的个数,以自身为中心九宫格计算多少个雷(1),这样的话如果是9*9那么在(1,1)坐标计算雷的时候会造成数组越界。
下图示例:
4.初始化棋盘:
有了棋盘后我们要把显示的棋盘给用户看,所以我这里一开始初始化全用的是《*》,而放雷的棋盘初始化给的是《0》我这里用1代表雷0代表没有雷。初始化棋盘也可以封装成一个函数。
代码示例:
5.打印棋盘:
打印棋盘只需要打印显示的数组就行,而且只需要打印9*9出来就可以。
代码示例:
效果演示:
6.设置雷:
因为第一次排查雷的时候不能有雷,所以在设置雷的时候,是先排查一次雷之后设置一次雷就行。
代码示例:![](https://i-blog.csdnimg.cn/blog_migrate/4ca1bbeb4a035d69ed8c00555da4ba78.png)
效果演示:
7.排查雷:
首先排查雷要确保你输入的排查坐标是正确的,其次在正确的情况下看是否是排查过的,最后在统计周围雷的个数,还要确保派第一次雷的时候没有炸弹。
代码示例:
效果演示:
这里我因为测试代码是否能运行所以我把棋盘设置成了3*3,雷设置成了一个,而且还开了全图,只是为了看效果。