扫雷游戏的理解上

1.扫雷游戏的原理:首先呢,有一个扫雷游戏所在的棋盘。上面就是有布置了雷的个数,棋盘上随机布置了雷我们以最基础的9×9为基础进行讲解a0cc6594a74a4151947ded02e8f51dd2.jpg

2.我们需要给出,我们想要少的那个雷的坐标。如果这个位置是雷,那我们就被炸死了,如果这个位置不是雷,那他就会告诉我们周围八个坐标有几个雷。

3.这个游戏结束的要求:第一种就是你把上面不是雷的地方全部找到,剩下的都是雷。第二种就是被雷炸死了,结束游戏。

4.首先假如我们以9×9的棋盘为例,假如我们要在上面放十个雷,我们可以把有雷的地方标注成为字符1,不是雷的位置我们就放为字符0,所以9×9的棋盘,我们就可以对应一个9×9的数组来布置雷的信息。

5.当我们给出一个坐标,如果它不是雷,且它周围有一个雷的时候,他就会显示1,此时的依旧与我们设置的有雷的地方是字符1有矛盾,因此我们得需要重新组建一个数出来,存放排查出的雷的信息,为了保持神秘感,我们可以一开始就把存放排查出雷的信息这个数组全部设置成*,因此我们可以把两个数组都设置为字符型,不之类的信息的数组最开始的初始化,我们可以初始化为字符0。排查出的雷的信息的这个数组的初始化,我们可以初始化为*。

6.当我们给出一个坐标,它不是雷的时候,我们就要统计它的周围8个坐标中是否有没有多少个雷,但当我们给出的这个坐标为棋盘的边界是,他周围的8个坐标就会有越界的。

f3c04ca8cdd246e2afddb314aa50cb8b.jpg

 所以为了防止我们排查的时候越界,所以我们就把布置雷的信息的这个棋盘加大一圈,也就是行和列分别加大两行和两列,所以布置雷的信息的这个数组就变成了11×11的,为了与之对应,所以我们把排查出的雷的信息的,这个数组也设置为是11×11。

7.我们给出一个原文件,里面放的是游戏所需的事项 game.c,我们再给出一个头文件,里面是相关的函数的声明game.h,还有一个后置文件test.c。

8.首先,我们在test.c这个文件里面建立我们的主函数,之后我们玩完一把这个游戏,我们可能会选择玩第2把第三把,所以这个函数里面我们需要有一个循环,我们选用do.while循环,玩这个游戏呢,我们首先是不是得有一个菜单,我们将其设置为menu()

9050cccd37394dfebc9d00da432ab8d5.jpg

92abc5ba6db849e68656f3df405c23cd.jpg

 如果我们选择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

19b856840d6342a399b171977c077580.jpg

 因为我们很多地方都会用到这些数据 ,所以我们把它放在头文件里面,这样在后面使用的时候,我们就只需要包含这个头文件就可以了。

10.所以我们就可以得到两个字符型的数组了,

6bb27007993949ceac42618e9f69cfec.jpg

当我们定义了这两个数组之后,我们需要初始化数组的内容为指定的内容,mine数组在没有布置雷的时候都是字符0,show数组在没有排查雷的时候都是*,此处我们可以写一个函数来进行布置雷,我们可以把这个函数到 game.h里面。

df92ecf3fbe04af8b7de634ce8463925.jpg

 

 接下来我们要把这个函数放在game.c文件里面进行实现。

11.首先我们需要在 game.c这个文件里面放上game.h进行函数声明,在进行初始化

7bd7ff016a28483b8536e1059ee46836.jpg

 12.此处,如果我们想先打印出来看一下是否和我们想的一样,我们可以以建立一个函数来进行打印,但是我们打印出来的这个棋盘中间的9×9的部分,而不是11×11的部分。

1e97a4e38c4440a1ac27f63260fc0ce8.jpg

 我们需要把这两个函数放到game.h中去进行声明

99aeab5c9b6e4939bd1c0e733c2f4b5c.jpg

 接下来我们再去game.c对这个函数进行实现,打印9×9的棋盘,为了方便看,我们可以给他加上行号和列号

c69e23c218c24e3fb5f4335970355f12.jpg

 36fbc2740f434a7ba0c57f473da8bf39.jpg

 

13.但是我们一般不会打印我们布置雷的这个mine数组,于是我们应该把它注释掉

ace42f519e1441b5b1f4eff903f9eee9.jpg

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值