1.扫雷游戏的原理:首先呢,有一个扫雷游戏所在的棋盘。上面就是有布置了雷的个数,棋盘上随机布置了雷我们以最基础的9×9为基础进行讲解
2.我们需要给出,我们想要少的那个雷的坐标。如果这个位置是雷,那我们就被炸死了,如果这个位置不是雷,那他就会告诉我们周围八个坐标有几个雷。
3.这个游戏结束的要求:第一种就是你把上面不是雷的地方全部找到,剩下的都是雷。第二种就是被雷炸死了,结束游戏。
4.首先假如我们以9×9的棋盘为例,假如我们要在上面放十个雷,我们可以把有雷的地方标注成为字符1,不是雷的位置我们就放为字符0,所以9×9的棋盘,我们就可以对应一个9×9的数组来布置雷的信息。
5.当我们给出一个坐标,如果它不是雷,且它周围有一个雷的时候,他就会显示1,此时的依旧与我们设置的有雷的地方是字符1有矛盾,因此我们得需要重新组建一个数出来,存放排查出的雷的信息,为了保持神秘感,我们可以一开始就把存放排查出雷的信息这个数组全部设置成*,因此我们可以把两个数组都设置为字符型,不之类的信息的数组最开始的初始化,我们可以初始化为字符0。排查出的雷的信息的这个数组的初始化,我们可以初始化为*。
6.当我们给出一个坐标,它不是雷的时候,我们就要统计它的周围8个坐标中是否有没有多少个雷,但当我们给出的这个坐标为棋盘的边界是,他周围的8个坐标就会有越界的。
所以为了防止我们排查的时候越界,所以我们就把布置雷的信息的这个棋盘加大一圈,也就是行和列分别加大两行和两列,所以布置雷的信息的这个数组就变成了11×11的,为了与之对应,所以我们把排查出的雷的信息的,这个数组也设置为是11×11。
7.我们给出一个原文件,里面放的是游戏所需的事项 game.c,我们再给出一个头文件,里面是相关的函数的声明game.h,还有一个后置文件test.c。
8.首先,我们在test.c这个文件里面建立我们的主函数,之后我们玩完一把这个游戏,我们可能会选择玩第2把第三把,所以这个函数里面我们需要有一个循环,我们选用do.while循环,玩这个游戏呢,我们首先是不是得有一个菜单,我们将其设置为menu()
如果我们选择1的话就是玩游戏,如果我们选择0的话就是退出,然后我们就把这个输入的值放在一个整形的变量input里面去,接下来我们要根据选的这个input的值来判断,如果选择的是1就玩游戏,选择的是0就退出游戏,如果选择的不是1也不是0,那我们就说选择错误,此时while的循环条件是input,如果我们玩完一把游戏后,我们选择1,我们可以再来一把游戏选择0我们就退出游戏,如果我们选择的既不是1也不是0的时候,他的判断条件为真,也可以再继续进行下一把游戏。
9.接下来,我们就可以开始写开始玩游戏的部分了,也就是game()函数,首先,我们需要两个11×11的字符型的数组。因此我们可以在game.h的头文件里面定义一个行为9的ROW,和列为9的COL,和一个行为11的ROWS=ROW+2,和一个列为11的COLS=COL+2
因为我们很多地方都会用到这些数据 ,所以我们把它放在头文件里面,这样在后面使用的时候,我们就只需要包含这个头文件就可以了。
10.所以我们就可以得到两个字符型的数组了,
当我们定义了这两个数组之后,我们需要初始化数组的内容为指定的内容,mine数组在没有布置雷的时候都是字符0,show数组在没有排查雷的时候都是*,此处我们可以写一个函数来进行布置雷,我们可以把这个函数到 game.h里面。
接下来我们要把这个函数放在game.c文件里面进行实现。
11.首先我们需要在 game.c这个文件里面放上game.h进行函数声明,在进行初始化
12.此处,如果我们想先打印出来看一下是否和我们想的一样,我们可以以建立一个函数来进行打印,但是我们打印出来的这个棋盘中间的9×9的部分,而不是11×11的部分。
我们需要把这两个函数放到game.h中去进行声明
接下来我们再去game.c对这个函数进行实现,打印9×9的棋盘,为了方便看,我们可以给他加上行号和列号
13.但是我们一般不会打印我们布置雷的这个mine数组,于是我们应该把它注释掉