扫雷的基本思路和流程
1.扫雷游戏的规则是怎样的
2.扫雷棋盘的初始化和棋盘内容展示的设计
3.如何布置雷和排雷
4.怎样判断胜负
5.怎样使用多文件形式来实现
一、扫雷的游戏规则
扫雷游戏的规则就是,在一块规定好的棋盘中,揭开所有没有雷的网格。 揭开网格,若该网格为雷则失败;若该网格周边八个网格中有雷,则显示雷数,若无雷则直接继续开启周边网格。
最终效果展示
想要做成这样的效果其实并不难,只需要把他拆分来就会很简单。
首先我们需要创建游戏的开始菜单和扫雷游戏的基本框架,如下:
由于其他循环都是需要先判断在执行,所以我使用到了do while循环语句先进行循环其次再判断,这时候我们就可以创建我们的初始菜单,和整个扫雷游戏的基本框架。
我们用1表示开始游戏,0表示退出游戏,这样进入do while循环时能更好的判断出是否需要进行扫雷游戏,再加上输入的判断数值是数字常量,于是可以用switch语句来进行判断。
这样扫雷游戏的基本框架就构建完成了。
二、扫雷游戏代码的实现
扫雷游戏的框架构建完成后就可以进行,扫雷游戏执行代码的写入了。
首先构建出游戏执行代码的框架,如下
在这一块设计到了多文件写代码的知识,在我们创建代码时分别有源文件和头文件两种:
本次扫雷游戏代码的写入时头文件(.h)是用来放代码的声明,而源文件(.c)是用来代码的实现。
首先我们要设置棋盘的大小 9*9的棋盘,但由于后面算法统计的时候需要识别周围一圈的8个位置雷的个数,用9*9的棋盘会导致最外面一圈识别时出现问题所以我们要创建一个11*11 的棋盘,如下:
但是玩家游玩9*9的模式时,我们并不能把11*11的棋盘展示出来,所以我们需要设置两个棋盘,一个用来布置雷和排雷,一个用来把排雷的信息所展示给玩家,如下:
棋盘大小设置完成后,接着就是初始化两个棋盘的内容,给玩家展示棋盘用*号来代替棋盘的内容;埋雷排雷的棋盘用0表示没有雷的区域,1表示有雷的区域,由于是初始化所以全是0,如下:
接着我们换到 test.h 的文件中来声明这个函数
然后到game.c的文件中来实现函数
这里涉及到一个知识点set,如果不用set的话,我们需要写两个这样的循环分别布置棋盘,而set可以把函数后面的值写入到对应的棋盘里不会重复。
初始化棋盘后我们可以先写一个打印棋盘的代码来看看代码是否正确有没有问题,如下:
写好函数后同上放入test.h声明,然后到game.c中实现。
为了让玩家更好的分辨出自己想排雷的是哪一行哪一列,再写个代码把行和列打印出来。
我们布置雷的时候需要在9*9的棋盘上布置雷,所以不能用刚刚设置的11*11的棋盘,要重新设置一个声明用来布置雷,其次两个棋盘我们只需要把展示给玩家的那个棋盘打印出来,而布置雷的则不用打印,我们用两个for循环来打印出行和列。
接着就可以埋雷了先写出埋雷的函数:
声明之后到game.c里实现,我们的棋盘是9*9的,所以我们总共设置10个雷,先声明雷的数量
然后每次埋雷时都需要埋在不同的地方,所以我们需用上rand 和srand函数来设置埋雷的随机性
完成后就可以写入一个while循环来布置雷,直到10雷布置完变成0跳出循环。
接着就是排雷了:
首先要设置胜利的条件,那就是所有的雷排出来,则游戏胜利,踩到雷则失败。用while循环来进行判断,输入需要排雷的坐标,然后判断该位置是不是雷,如果不是则需要统计附近有多少雷,统计方法如下:
将统计的结果返还并打印到棋盘上,如果输入的坐标越界则提醒玩家输入错误,直到游戏结束。
这样一个完整的扫雷游戏就完成了,下面是完整的代码供参考: