“程序 = 数据 + 算法”,一款好的作品不单单是代码的堆砌,还有其灵魂的部分,那就是算法;算法是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法既然是解决某类型问题的规范,那么我们就学习它,并在我们的作品中使用它。从这一期开始做一个迷宫系列,包括用算法生成随机迷宫,用算法自动寻址走迷宫。
三大迷宫生成算法之一“随机Prim算法不是优先选择最近选中的单元格,而是随机的从所有的列表中的单元格进行选择,新加入的单元格和旧加入的单元格同样概率会被选择,新加入的单元格没有有优先权。因此其分支更多,生成的迷宫更复杂,难度更大,也更自然。
普里姆算法(Prim's algorithm)在维基百科(wiki)中这样描述的:
是不是看着迷糊?图论的prim算法其实是最小生成树,与用prim生产迷宫算法有点差别,以下是我从网上找来生成迷宫的步骤要求:
(1)初始地图所有位置均设为墙
(2)任意插入一个墙体进墙队列
(3)判断此墙是否可以设置为路(判断依据在于上下左右四个位置是否只有一个位置是路)
(4)若设置为路,则将该位置周围(上下左右)的所有墙插入队列,接着执行(5);若无法设置为路,直接执行(5)
(5)从墙队列中删去当前位置所在节点
(6)若墙队列不为空,则从队列中随机选取一面墙重新执行(3),直到墙队列为空
有了这个步骤就简单多了,首先新建一地图状态列表(初始化为1表示全是墙),然后定义三个列表分别用来存放待处理墙、某个格子周边的墙、周边的路。具体实现步骤写起来太啰嗦,还是看我的讲解视频吧。
想要源代码的朋友加我个人微信获取吧~
相关视频:
为方便大家学习和交流,添加QQ群:589036321,大家在学习中有疑问可以提出来,我会耐心给大家一一解答!~大家也可以添加我的微信(corax_8088)随时提出您的疑问,我们一起学习!