小游戏系列算法之四扫雷游戏核心算法,非递归无雷区自动翻开
2013-04-29 13:48
337 查看
首先我们来分解一下扫雷游戏应该实现的功能
1.地图创建
2.计算点击位置周围雷的数目
3.无雷区自动翻开
4.胜负判决
第一步,地图创建,十分简单,创建一个二维数组类储存地图的相关信息则可,0表示无雷,1表示有雷。
第二部,计算点击位置周围雷的数目
这个也很简单,遍历目标单位上下左右共八个格子就可以了,注意排除越界情况
function round(x,y) retun count
count是雷的数目
第三部 无雷区自动翻开
所谓无雷区自动翻开,就是点击一个位置,如果是0,也即是无雷,那么就翻开他的上下左右8个格子,然后对这八个格子进行检查,如果当中某个格子也是0,那么继续对这格子的上下左右进行检查,如此反复。
这个用递归自然可以实现,但是递归的效率并不高,而且有层次限制。这可能也是为什么给个选做用非递归实现的原因。我当然也用非递归实现咯。
思路很简单,新开两个数组一个是待检测数组,一个是已检测数组
检查某个位置,如x,y时,先把它Point(x,y)(或者是其他类似的地图单元类,记录地图单元信息)push进待检查数组。然后循环
while(待检测数组的长度>0){
count = round(point.x,point.y)
把point从待检测数组放到已经侧数组
如果count等于0,把point周围的八个point放进待检测数组,注意如果已检测数组里面已经有那个point了,就不要把它加到待检测数组里面,不然会死循环
}
就是这么简单,其实和广搜的原理差不多
4.胜负检测
这个更简单了,判断下点击的位置有枚炸弹,如果无运行第三步,然后检测剩下的格子和雷数是不是一样就可以了。
1.地图创建
2.计算点击位置周围雷的数目
3.无雷区自动翻开
4.胜负判决
第一步,地图创建,十分简单,创建一个二维数组类储存地图的相关信息则可,0表示无雷,1表示有雷。
第二部,计算点击位置周围雷的数目
这个也很简单,遍历目标单位上下左右共八个格子就可以了,注意排除越界情况
function round(x,y) retun count
count是雷的数目
第三部 无雷区自动翻开
所谓无雷区自动翻开,就是点击一个位置,如果是0,也即是无雷,那么就翻开他的上下左右8个格子,然后对这八个格子进行检查,如果当中某个格子也是0,那么继续对这格子的上下左右进行检查,如此反复。
这个用递归自然可以实现,但是递归的效率并不高,而且有层次限制。这可能也是为什么给个选做用非递归实现的原因。我当然也用非递归实现咯。
思路很简单,新开两个数组一个是待检测数组,一个是已检测数组
检查某个位置,如x,y时,先把它Point(x,y)(或者是其他类似的地图单元类,记录地图单元信息)push进待检查数组。然后循环
while(待检测数组的长度>0){
count = round(point.x,point.y)
把point从待检测数组放到已经侧数组
如果count等于0,把point周围的八个point放进待检测数组,注意如果已检测数组里面已经有那个point了,就不要把它加到待检测数组里面,不然会死循环
}
就是这么简单,其实和广搜的原理差不多
4.胜负检测
这个更简单了,判断下点击的位置有枚炸弹,如果无运行第三步,然后检测剩下的格子和雷数是不是一样就可以了。
相关文章推荐
- 吴昊品游戏核心算法 Round 16 ——吴昊教你玩口袋妖怪 第三弹 地洞谜题
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第九弹 冰系道馆
- 吴昊品游戏核心算法 Round 17 —— 吴昊教你玩拼图游戏(8 puzzle)
- python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
- 吴昊品游戏核心算法 Round 18 —— 吴昊教你玩Glow Puzzle(后篇)
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第四弹 拉帝亚斯?!拉帝欧斯?!
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第七弹 小茂道馆
- 扫雷游戏制作过程(C#描述):第三节、雷区绘制
- 如何用JavaScript做一个贪吃蛇游戏,贪吃蛇系列_02自动走
- 小游戏系列算法之三连连看算法及原理
- 吴昊品游戏核心算法 Round 15 (补遗篇) —— 吴昊教你玩UnderCut(毫无策略性的纸牌游戏的模拟)
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第六弹 龙系道馆
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(七)传说中的A*寻径算法
- 算法系列之十二:多边形区域填充算法--递归种子填充算法
- 吴昊品游戏核心算法 Round 17(补遗篇) —— 单词游戏(后篇)