扫雷思路:
有个棋盘,布置雷,然后扫雷
准备两个数组,一个专门布置雷,一个给人看的
注意:
但是,排雷时,边上的格子,会越界访问,为了防止这种情况发生,我们将真实的棋盘扩大一圈。这样,就不会越界了。
步骤:
1.创建界面函数
——无论什么游戏,都有游戏菜单,提供选择:1开始游戏 0退出游戏
2.创建存储布置雷的数组和玩家查看的数组
——进入游戏后,我们得有个扫雷界面。
这时,就用到两个数组,一个是存储布置雷信息的1号数组,当扫雷时,就是在这个数组里面判断的。一个是给玩家选择的2号数组,玩家选择扫雷目标是在这个数组进行的。
——游戏根据玩家在2号数组选择的坐标,去1号数组找对应的坐标进行判断。
3.棋盘初始化
我们得给这两个棋盘初始化,方便后面1号数组布置雷,2号数组排查雷。
4.打印棋盘(也可以先布置雷,但是先打印棋盘,可以方便查看前面代码是否出错)
——就是怎么好看,怎么打印。注意,打印的棋盘是比真实棋盘要小一圈的
另外,在写代码的时候,可以将两个棋盘都打印出来看一下。但是游戏时候,就只能打印玩家查看的排雷棋盘。
5.布置雷
——利用随机数生成来布置雷,范围是查看棋盘的范围(比真实棋盘小一圈) 设置雷的数量,每布置一个,就减一个。注意,布置过雷的地方,不要布置了。
6.排雷
——基础排雷就是:碰到雷就输了,若没碰到雷,就反馈周围有几个雷,还有排查过的地方,不能重复排查。
增加的功能有:
1.开头不炸功能 2.标记功能 3.展开功能
7.判断输赢
——被炸死就输了。
没被炸死,就循环继续,直到所剩未排查的地方==雷的个数,就赢了
6.1开头不炸功能
——当第一步就碰到雷,利用转移,将此处的雷转到其他非雷的地方。但是只能是排雷的第一步有这个功能。
6.2标记功能
——在排雷时,提供两个选项:1扫雷 2标记。
进入标记功能,有标记和取消标记,被标记的地方,不能排雷。
6.3展开功能
——当扫雷的地方满足三个条件:
1.该坐标不是雷
2.该坐标周围没有雷
3.该坐标没有被排查过
当满足这三个条件时,就进行展开函数。利用递归将其周围也进行条件判断是否继续展开。
注意,还有一个隐藏条件:展开功能不要超出棋盘的范围
最后,根据这个思路,我写了一个简单的扫雷:saolei · xiongxiong007/代码练习 - 码云 - 开源中国 (gitee.com)