今天给大家大家带来一个用c语言实现的扫雷游戏
首先说一下用c语言实现的扫雷游戏的特点:
1.打印扫雷棋盘
2.玩家选择点开(扫雷)坐标
3.选中雷 --> 游戏结束
没选中 --> 打印棋盘并提示刚才坐标周围的雷数(八个方向)
再说下我的程序功能:
1.游戏过程中,如果选的坐标八个方向都没有雷则展开这九个坐标并提示雷数
2.如果坐标四周没有雷则不进行提示显示空格
3.选中雷则在同一张棋盘上打印出所有雷的位置和先前的游戏记录
4.记录游戏时间
5.计分功能
6.提供标记雷和去标记的功能
如果对您有帮助或者启发不妨给我点一个赞或者关注哦~
游戏视频如下:
注意:
扫雷游戏实现分三步
1 初始化
2 布置雷
3 扫雷
注意:
1)首先要清楚,扫雷棋盘上的元素:1)提示信息 2)雷 而我们在打印棋盘时不能将雷的位置打印出来。
所以,我么们就需要两个棋盘分别存贮这两种信息
2)扫雷时我们要给玩家在被点开处一个周围雷数的提示(0~8)。这个提示基于四周雷的个数,所以要对四周的坐标做出判断。
因此就出现了一个问题:在棋盘边角的元素如何判断?直接判断可能会造成溢出,所以我们给棋盘增加2行2列
3)字符和整型的转化问题
由于我是用vs分三个文件写的,想测试我的代码的朋友不妨如下图方式打开:
下面带大家具体看看我的函数的实现:
1. 游戏过程中,如果选的坐标八个方向都没有雷则展开这九个坐标并提示雷数
static int Stretch(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y) {
int count = 0;//记录周围没有雷的点的个数
if (HintMine(mine, x, y) == '0')
count++;
if (HintMine(mine, x - 1, y) == '0')
count++;
if (HintMine(mine, x - 1, y-1) == '0')
count++;
if (HintMine(mine, x - 1, y+1) == '0')
count++;
if (HintMine(mine, x + 1, y) == '0')
count++;
if (HintMine(mine, x + 1, y-1) == '0')
count++;
if (HintMine(mine, x + 1, y+1) == '0')
count++;
if (HintMine(mine, x , y+1) == '0')
count++;
if (HintMine(mine, x , y-1) ==