扫雷小游戏的设计思路以及实现的细致讲解

        大家好,今天博主来介绍扫雷小游戏的设计思路以及实现,会很细致的呦,喜欢的话还请给个三连吧!

目录

                                  设计思路

一,基础框架

二,基础框架的填充和完善

                                  代码实现

一,初始化函数

二,埋雷函数

三,展示雷区的函数

四,提醒玩家输入坐标并判断输赢的函数


                                  设计思路

一,基础框架

还是那句话,不论什么游戏,都需要游戏最基础的部分——选择是否进入游戏,游戏的内容,玩完了之后选择是否退出游戏。并且此次依然需要三个文件:game.h  game.c   test.c进行模块化编程

分析:由于玩家很有可能玩过一局之后还想再玩一局,所以此时需要一个循环结构来提问玩家是否还要再玩一局,而玩家要通过选择来决定,所以需要一个判断结构。

于是,代码如下。(一些需要使用的头文件已经放在game.h中)

 

 运行结果没有问题,进行下一步。

二,基础框架的填充和完善

1.众所周知,扫雷首先需要一个棋盘,那么就需要一个二维数组来表示。

2.进入游戏前,电脑要对二维数组中的随机元素进行埋雷操作。

3.进入游戏后,玩家需要看到雷区以及一些提示内容,所以需要能够展示和打印雷区的函数。

4.玩家需要通过输入坐标来进行排雷,所以需要一个提示玩家输入坐标的函数。

5.游戏的结局可能是失败或者成功,所以需要一个判断输赢的函数。

6.每次游戏结束后,都需要对雷区进行重新排布,让游戏充满随机性,所以需要一个初始化函数。

  到这里,大体上没有问题,但是扫雷游戏中最初出现在我们眼前的画面是这样的。

对的,是不会让玩家看到地雷的。但是我们如果打印了二维数组,岂不是就会把信息暴露吗?那游戏就没有可玩性了。该如何解决这个问题呢?

我们只需要再创建一个二维数组就好,一个仅仅用于埋雷,另一个用于和玩家来交互即可。

又因为,在调查棋盘边缘地雷信息时,很有可能发生数组越界,所以需要扩大数组为ROWS,COLS。

并且由于打印雷区信息,玩家进行排雷操作和判断输赢  这几个函数会进行好几个回合(应该没人会一上来就点到炸弹吧,⊙﹏⊙汗),所以要用一个循环结构封装起来。

于是,代码如下。

                                  代码实现

                                        终于到了最激动人心的时刻

一,初始化函数 

我打算将埋雷数组初始化为全‘0’,当然是字符‘0’。

将展示埋雷信息的数组初始化为全‘ * ’。

这很简单,只需要一个嵌套循环。

这个函数不需要返回值,参数分别是数组的首个元素的地址,行数,列数。

我们当然可以写两个函数,每个函数各自初始化不同的数组为“0”和“*”。

但是有点麻烦,不如再设置一个参数,然后由我们自己来传参决定要初始化为“0”或者是“*”。

于是,代码如下。

二,埋雷函数

显然,此函数不需要返回值,它的参数应该是数组地址,行数和列数,但是要注意,此处的行数和列数是并不是数组扩展之后的,而是扩展之前的。

不可以在已经埋雷的地方再次埋雷,并且一定要埋好一定个数的地雷。至于随机数的问题,可以去我三子棋那篇文章,这里不再赘述。

上代码

三,展示雷区的函数

显然不需要返回值,参数为show数组的地址,行数和列数。

函数内部:需要将行号和列号打印出来作为玩家进行排雷操作的辅助

上代码

四,提醒玩家输入坐标并且判断输赢的函数

此函数不需要返回值,参数为bomb数组的地址,行数和列数。

函数内部:在玩家输入坐标后,需要进行判断是否合法。输入坐标的条件是  1.在棋盘范围內部

2,不可以在已经排查过得区域再次排查。

上代码

好的,以上便是全部讲解,谢谢大家,给个三连呗

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值