目录
前言
相信很多人小时候都玩过扫雷游戏,如果用C语言又应该怎么编程实现呢?
一般来讲,扫雷最开始会有一个棋盘,当玩家点击一个位置时就会显示这个位置周围有多少个雷,今天我们就用C语言来实现一个简单的扫雷游戏!
一起来看看吧!
扫雷思路
打印菜单
首先我们可以使用一个函数,来进行菜单的打印,让用户进行选择,如果选择1,用户就可以进入扫雷游戏!
游戏的实现,我们可以用另外的头文件和源文件来进行实现。
具体代码如图:
初始化棋盘
我们知道棋盘中有雷和非雷,我们可以使用一个二维数组来进行棋盘的布置,因为后面还需要统计周围雷的个数,如果是一个9*9的棋盘的话,我们就需要使用一个11*11的二维数组,在9*9的基础上,上下左右加一行,就不需要进行判断是否越界!
为了更加容易更改,我们可以使用宏定义的方式来指定数组的行数和列数。
为了后面与统计雷的个数进行区分,我们使用字符数组来进行,用字符‘0’表示非雷,用字符‘1’表示雷。
同时我们这里初始化两个数组,一个用来存放雷,一个用来展示。
宏定义和函数声明我们可以在头文件game.h中实现
打印棋盘
这里的棋盘打印只需要用户看到的9*9的形式,我们也可以进行一定的优化,打印出它的行号和列号
效果如下:
存放雷
我们前面提过在字符数组中,用字符‘0’表示非雷,用字符‘1’表示雷。这就需要我们在棋盘中进行雷的存放。我们可以使用宏定义的方式来确定雷的个数,通过坐标的方法在不同的10个位置存放雷。雷的位置是随机的,我们就可以使用rand这个函数,通过不同的坐标来存放雷。
代码如图:
我们可以通过打印的方式看是否存放雷成功,我们可以看到确实存放了10个雷
统计雷的个数
当玩家输入坐标之后,有下面三种情况
1.坐标不在范围内,重新输入
2.坐标在范围内,但是这个坐标是雷,游戏失败
3.坐标在范围内,并且这个坐标不是雷,就需要统计周围雷的个数并且进行展示
在统计周围雷的个数时,我们需要注意的我们是使用字符数组来存放雷的,字符本质上是ASCII码值,减去字符0,得到一个整数。比如‘1’-‘0’=1,因为字符1的ASCII码值为49,字符0的ASCII码值为48.在进行展示的时候需要加上字符0,将雷的个数存放在字符数组中。
当排除了所有不是雷的位置,成功通过游戏。
简单测试
到这里代码就完成了,我们可以用3*3的棋盘和1个雷来测试代码是否正确!