扫雷游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
其游戏界面如下:
那么,如何来制作这个游戏呢?
大致思路为:
- 游戏菜单制作
- 游戏主体函数
- 游戏实现
游戏菜单
游戏主体函数
用C语言实现简单的扫雷,我们需要创建两个数组,一个数组存放雷的信息,另外一个数组存放排雷后结果的信息。
注:
在创建数组时候,需要注意的是数组需要大一圈,什么意思?举个例子,比如说我们实现的是9 ×9的扫雷,那么我们的数组就得创建10×10
原因是当我们在实现排雷功能的时候,需要位置某个位置的八个方向遍历一次,如果9×9的数组的话,在边上遍历的时候就会出现数组越界,因此我们需要在设计的时候大一圈,避免数组越界。
我们创建
- 一个专门存放所有函数声明的文件,将其命名为game.h(头文件)
- 一个来编写游戏的实现逻辑,将其命名为game.c(源文件)
- 一个来编写游戏的测试逻辑,将其命名为test.c(源文件)
大致思路为:
- 初始化棋盘
- 打印棋盘
- 布置雷
- 排雷
1.初始化棋盘
在test.c中创建
//创建数组
char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息
char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息
//初始化mine数组为全‘0’
InitBoard(mine, ROWS, COLS, '0');
//初始化show数组为全‘*’
InitBoard(show, ROWS, COLS, '*');
在game.c中实现
2.打印棋盘
在test.c中创建
//打印棋盘
//DisplayBoard(mine, ROW, COL);
//DisplayBoard(show, ROW, COL);
在game.c中实现
3.布置雷
在test.c创建
//布置雷
SetMine(mine, ROW, COL);
在game.c中实现
4.排雷
在test.c中创建
//排雷
FindMine();
在game.c中实现
注:上述所有函数的定义和声明以及引用的库函数等我们都在game.h中实现
游戏的实现
我们生成随机数进行测试
在test.c中创建
运行效果如下: