在制作扫雷原理之前,我们先了解扫雷的原理。当你挑选了一处点击后,如果该处不是雷,它会显示自己周围一圈雷的数量,并且如同花朵一样绽开,绽处如果周围一圈没有雷,那么会继续延伸,有了则会停止继续绽放。获胜条件就是除雷以外处全部被翻开过。好的,接着我们开始编写代码程序。
首先分为三个文件,分别是game.h,用于函数声明,game.c,用于编写游戏内部程序,同时也能让你思路更加清晰,最后是test.c,能够测试游戏效果。
该处代码为简易测试代码,利用do while循环,实现至少打印一次游戏选项画面的效果。
switch语句逻辑,1为进入游戏,0为退出游戏,同时while循环判定条件也为input,可以实现程序的结束,为了以防有人输入错误,输入default。
创建两个二维数组,用以存储游戏数据,分别的放置雷区的数组,以及玩家游戏时看到的数组。
以简单模式扫雷为例,9X9的棋盘,但扫雷时判断周围多少雷的过程中可能会出现数组越界,所以选择11X11数组,给它扩上一圈。同时运用define,方便你改变游戏格子大小,而不需要后面一个一个改参数。
对棋盘进行初始化。
埋雷,制作棋盘。
为了确保雷的位置不同,选择rand函数来随机。
制作棋盘,看个人喜好,制作时通过不断调整来达到自己想要的效果。
个人粗制效果如图
这个是答案,后面测试的时候输出出来,测试代码有无bug。
体验游玩过程的时候还是注释掉。
添加选择,标记或者排雷。
注意一些玩家可能会出现的问题,例如重复输入坐标,输入坐标不在范围内。
整个过程是重复的,所以大体用while循环括起来。
对于排雷,分为两种情况,一是提示,二是踩到雷,直接被炸死。
提示我们选择函数递归,使得如同真正的扫雷那样炸开来式的提示。
为了使逻辑清晰,函数递归分成两步。
第一个是小式的提示,统计周围一圈的雷数。
第二个是绽开式的提示,如果某处周围雷数为0,则会看该位置周围其余位置,然后重复此步骤。
最后增加胜利判断条件