极简风游戏,扫雷

按照自己的理解将扫雷这款游戏复刻了一遍,我会将整个我自己的思路分享给大家,同时也请大家看完我的代码给予一些优化的建议。(代码写的太烂,有绝对的优化空间)

思路如下

这里跟大家讲一下为什么打印棋盘内容,要在放置地雷之前考虑,主要是因为新手在写代码的时候,总是代码从头写到尾,最后自信满满的按一下f5,程序崩溃了,然后就回去从头开始检查。所以,打印棋盘内容,一方面是为了完成某个功能,更重要的是方便调试!!!

首先对于游戏进入界面我们依旧采用do while()循环,以玩家输入的值作为循环的条件。(简单的代码就不给大家展示了,详情请看gitee链接)

棋盘的设计我们采用两个二维数组,一个用来存放地雷,另一个用来展示,定义两个宏,用来更改棋盘大小。(这种思路也是抄的,有其他的思路可以留言给我讲一讲)

至于初始化,以为我们采用的是二维的数组,所以嵌套循环,传参数时输入想初始化的内容即可,但是记住,如果使用char类型定义的数组,传参数也要是char类型的数据。

上述在ASCII码值中每个字符都有一个对应的数据。

放置地雷,我们在实现功能时,还要考虑游戏难度,所以在这里我也定义一个宏,来控制地雷的数量。我的代码如下。

到现在,打印棋盘没有问题,布置地雷也没有问题,是不是这就结束了,实际上这才是开始。让我们思考,当我们排查地雷的时候,如果玩家选中地雷,游戏就结束,如果没有选中就看看被选中坐标周围的八个坐标,是不是雷,这时候问题来了,如果玩家选中的正好是边界呢,那么这时候,总会有一部分空间不属于我们,该怎么判断呢。(请大家思考一下)

我才用的方法是把原本的数组扩大一圈,并且我们不论是布置雷还是排查雷,我们都只用中间的一圈。

继续往下,我们要判断一些条件,在什么时候输入的坐标能采用,不能采用。

这样基本的功能就剩下判断是不是胜利了,不过我在原本的判断条件基础上写的函数,如果当前选中的展示的数字是0,那么就向周围的八个格子扩散进行递归。

不足之处就是进行了多次重复的递归,导致代码的效率是不够高的,虽然自己知道问题,但是没有解决的思路,还希望留言讨论一下大家的想法。

最后判断输赢

条件是每剩一个未打卡的格子,计数器加一个,如果未打卡格子的数量大于雷的数量就证明游戏还在继续。

好了,我的思路基本讲完了,欢迎各位大佬来对我的代码进行评价和指教,我会虚心学习的。

gitee链接:https://gitee.com/dumpling-treasure/practice.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值