首先打开游戏界面会出现一个扫雷区,有三种扫雷区可供选择,各扫雷区的扫雷难度依次递增
初级:81个方块,10个雷(这里实现的是初级版的扫雷)
中级:256个方块,40个雷
高级:480个方块,99个雷
玩法
扫雷游戏的规则非常简单:
挖开地雷(即点到设置成为雷的方块),被炸,游戏结束。
挖开空方块,可以继续玩。
挖开数字,则表示在其周围的八个方块中共有多少个雷,可以使用该信息推断能够安全单击附近的哪些方块。
玩游戏过程中的情况如下:
1.创建菜单
2.创建和初始化游戏扫雷区
3.设置雷的位置
4.打印出扫雷区
5.开始扫雷
规定输入 1 为玩游戏,输入 0 为退出游戏
首先创建雷区需要两个二维数组
- Mine[ROWS][COLS] 用来存储布置雷区的信息,不会显示出来
- Show[ROWS][COLS] 用来显示出扫雷游戏过程中的数据
- InitBoard(char board[ROWS][COLS], int rows, int cols,char set)函数用来初始化游戏界面
- InitBoard(Mine, ROWS, COLS,‘0’) 函数将Mine数组中每个元素全部初始为字符 ‘ 0 ’
- InitBoard(Show, ROWS, COLS, ‘*’) 函数将Show数组中的每个元素全部初始化为 ‘ * ’
利用随机数产生机制(若不明白随机数的产生,可以看:如何生成随机数)在数组 Mine[ROWS][COLS] 中随机产生所需个数的雷,规定字符 ‘ 1 ’ 为雷,字符 ‘ 0 ’,不为雷
同理,相应的Mine数组或者Show数组传入
DisplayBoard(char board[ROWS][COLS], int row, int col) 函数中就可实现对应界面的打印
FineMine(char Mine[ROWS][COLS], char Show[ROWS][COLS], int row, int col) 为扫雷函数
首先输入要排雷的坐标,若坐标合法,则排雷
当被排的坐标为雷是,则被炸;若不是雷,则在此坐标显示周围的雷数
显示雷数的函数为Get_mine_count(char Mine[ROWS][COLS], int x, int y)
当排完所有雷后,则排雷成功
以上是各各步骤函数的具体实现,而为了方便,我们将代码分为三个文件:
1.game.h------关于游戏相关的函数声明,符号声明及头文件的包含
2.game.c------游戏相关函数的实现
3.test.c------测试游戏的逻辑
game.h
说明:当扫雷的坐标为扫雷区的边缘时,为了方便打印扫雷区边缘上坐标附近雷的数目,这里设置的实际上的数组比显示出来的数组要“大上一圈”,即上下多一行,左右多一列
game.c
test.c