C语言可以实现简易版的扫雷,今天用这个扫雷程序入门,了解写一个程序最核心的东西。
首先,扫雷作为一个游戏程序,它必然有实现功能的各种函数,这时候就不要都写在test.c中了,我们可以分开,添加一个game.c和game.h的文件,game.h用来声明实现游戏的各种函数,game.c用来写game.h中声明函数的具体功能,而test.c中就写出游戏是如何一步步实现的,此时,我们已经明确了三个文件的作用,那接下来我就开始梳理如何利用数组的语法写扫雷。
首先,扫雷的游戏逻辑应该大家都玩过,简单说下
1、如果选择的位置有雷,直接被炸死
2、如果选择的位置没雷,那么显示该坐标周围一圈雷的个数
3、如果最后剩下的位置均为雷,那么玩家游戏胜利。
我们先简单写一个菜单,这个就不讲解了。
上面的随机数指令讲在后面讲解,接下来我们就要进入game函数来布置棋盘了,我们需要实现一个9*9的棋盘,就需要做一个11*11大小的数组,因为上下左右四个边界,先将头文件中各个定义写出来。
为了方便,使用两个数组来进行,这样可以避免在一个棋盘上同一个位置显示不同字符的情况,
1.mine数组是用来存放布置好的雷的信息
2.show数组是用来存放排查出的雷的信息
在声明两个数组后,接下来的初始化棋盘,布置雷,和排查雷,我们需要分别在头文件中声明,也就是最上面图中的声明,并在game.c中实现其功能,注意第一张图中的红色框框,多传一个参数就是为了初始化方便。
前面说的生成随机数就是为了在布置雷的函数中使用,用1代表雷,一共生成10个雷
接下来就是排查雷,使用get_mine_count()函数用于统计所排雷周围有几个雷;(算法技巧,这里值得看看)
Find_Mine()作用:
1. 输入排查的坐标
2. 检查坐标处是不是雷
(1) 是雷 - 很遗憾炸死了 - 游戏结束
(2) 不是雷 - 统计坐标周围有几个雷 - 存储排查雷的信息到show数组,游戏继续,直到排查完毕。