prim算法_自动生成随机迷宫(1)prim算法

      “程序 = 数据  + 算法”,一款好的作品不单单是代码的堆砌,还有其灵魂的部分,那就是算法;算法是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法既然是解决某类型问题的规范,那么我们就学习它,并在我们的作品中使用它。从这一期开始做一个迷宫系列,包括用算法生成随机迷宫,用算法自动寻址走迷宫。         三大迷宫生成算法之一“随机Prim算法不是优先选择最近选中的单元格,而是随机的从所有的列表中的单元格进行选择,新加入的单元格和旧加入的单元格同样概率会被选择,新加入的单元格没有有优先权。因此其分支更多,生成的迷宫更复杂,难度更大,也更自然。

2ac3b639407f6c234fcb00d4bedbf0c6.gif

普里姆算法(Prim's algorithm)在维基百科(wiki)中这样描述的: 827bf945163501d36c153e5a77326b49.png       是不是看着迷糊?图论的prim算法其实是最小生成树,与用prim生产迷宫算法有点差别,以下是我从网上找来生成迷宫的步骤要求: (1)初始地图所有位置均设为墙 (2)任意插入一个墙体进墙队列 (3)判断此墙是否可以设置为路(判断依据在于上下左右四个位置是否只有一个位置是路) (4)若设置为路,则将该位置周围(上下左右)的所有墙插入队列,接着执行(5);若无法设置为路,直接执行(5) (5)从墙队列中删去当前位置所在节点 (6)若墙队列不为空,则从队列中随机选取一面墙重新执行(3),直到墙队列为空      有了这个步骤就简单多了,首先新建一地图状态列表(初始化为1表示全是墙),然后定义三个列表分别用来存放待处理墙、某个格子周边的墙、周边的路。具体实现步骤写起来太啰嗦,还是看我的讲解视频吧。 想要源代码的朋友加我个人微信获取吧~ 82d4ff192f2c3966314b478ea900aaff.png 相关视频:

     为方便大家学习和交流,添加QQ群:589036321,大家在学习中有疑问可以提出来,我会耐心给大家一一解答!~大家也可以添加我的微信(corax_8088)随时提出您的疑问,我们一起学习!

bb33c1456ea4b48fcb91d0b4d49c2efe.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值