扫雷游戏设计思路

本文详细描述了扫雷游戏的编程实现过程,包括创建二维数组、初始化雷和棋盘状态、打印棋盘、设置雷的数量、返回雷信息以及找雷阶段的逻辑。通过代码示例解释了如何通过字符数组处理雷和非雷信息,以及如何控制游戏难度。
摘要由CSDN通过智能技术生成

扫雷游戏是怎么玩。

游戏的界面是许多的小格子组成,其中放有雷,而在点击其中的一个小格子是会显示出周围的八个格子雷的数量,再把其信息放到其格子中,如下面中的‘2’数字,代表了周围有八个格子中有俩个是雷。由此可以往下继续思考。

代码的思路:创建数组-->初始化数组-->打印棋盘-->设置雷-->返回雷信息-->找雷阶段

创建数组的阶段

其中我们可以把雷在代码中用‘1’来表示,没有雷的地方初始化为‘0’,而棋盘我们可以用二维数组来表示。我们需要创建俩个数组,为什么呢?因为,我们的雷初始化为‘1’,而查询周围的格子也可能为‘1’,会造成歧义,而再加上如果为俩个数组的话更加的容易理清思路。一个数组为藏雷的数组,一个数组为排查雷返回显示信息的数组。

而为了神秘感,把排查雷的数组最开始都初始化为‘*’。后,在想我们需要什么样的数组,初始化为‘*’,就需要字符数组,所以就把 数组定为字符数组(俩个数组),这样也方便后的操作。(只需要写一个初始化函数)

而后,我们需要多大的数组呢?[11][11]的不要[9][9],因为,这样的话,方便在排查雷时候,数组不会越界:也不用加其他的限定条件,用[9][9]的话,其次,在输入要排查的坐标的话,就不用再去减一,这样也方便。

其中的ROWS和COLS为11。

运用#define可以方便以后对于棋盘大小的修改,而对于定义ROW和COL是因为我们主要的还是对于9×9棋盘的操作,11×11的主要是防止数组越界的而已。

初始化数组的阶段

初始化数组时我们可以把‘*’或‘0’传参,这样我们就可以只用写一个函数,不用写俩个函数来初始化数组,这样就更加的方便。

打印棋盘的阶段

其的代码的第一个for循环时先打印出0到9的数字,后俩个for循环嵌套是先打印1再打印‘*’后换行,以此类推打印出棋盘。

设置雷的阶段

其中的EASY_COUNT是设置雷的数量,同样设置成#define,方便再后续来增加减少雷的数量,来调整扫雷的难度。

返回雷信息的阶段

返回雷信息是扫描周围的八个格子来扫描有几个雷。我们在初始化布置雷的棋盘的时候,‘1’为雷,‘0’为没有雷,所以,我们可以把周围的八个格子都加起来,再去减去8ב0’,就能得到雷的信息。因为,字符‘1’的Ascll值为49,字符‘0’的Ascll值为48。俩个相减就能得到雷得数量。(两个相减为数值)

找雷阶段

把找雷的阶段分为三个分支,一 坐标输入非法;二 踩到雷;三 符合输入找雷。而在第三个分支又分为俩个支路(一个是正式找雷,另一个是输入的坐标重复)。在其中用到了continue,输入的坐标非法的话就会跳过本次的循环。在其中的    show[i][j] = count + '0'语句中,排雷返回的值要加个字符‘0’,因为 排雷返回的值只是一个数值而已,而我们所创建的数组为字符数组,不符合类型,所以,再加字符‘0’重新转为字符数字来显示出来。我们创建个变量win来记录成功排查格子的数量,只有在成功排查格子时win才会++。最后,while循环的条件为win <=ROW * COL - EASY_COUNT,在排查除雷的全部格子后才会退出循环,而这也是扫雷成功的条件。至此扫雷游戏设计就结束。

最后,代码只是基础的扫雷游戏,功能还有其它的欠缺。其中若有有什么错误或不足的地方,希望大家能够帮我指出,谢谢。期间发现错误会进行修改。

  • 43
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值