我正在尝试在我的游戏中实现深度优先搜索算法。我一直在研究这个网页: http: //www.mazeworks.com/mazegen/mazetut/index.htm,却发现我无法将它与块而不是墙一起使用。我所说的块是指覆盖整个单元格的正方形,而不仅仅是边缘。我认为这样做会更容易,但现在我不太确定。有人做过吗?如果是这样,怎么做?(伪代码很好)。或者,如果它更容易,我应该只使用墙壁方法吗?
问问题
3096 次
1 回答
4
取决于您实际希望实现的目标,我为您提供了两种解决方案。它们基本上都是您引用的网站上提供的算法。
1.)在你的迷宫中的预定义位置有块
2*k+1
你在网格上运行算法- 假设您的单元格编号从左上角(0,0)开始。将具有 2 个奇数坐标 (
(2*p+1, 2*q+1); p,q < k
) 的所有单元格标记为块。 - 您从源对剩余的单元格(“偶数单元格”)运行修改后的算法。修改是:
- 从随机挑选的偶数单元格开始
- “相邻单元格”是任何网格方向上的第二个但下一个单元格;即你“跳过”一块砖。
- 而不是撞倒细胞之间的墙,你把块变成一个可访问的细胞。但是,这个单元格不会被选择和回溯考虑
2.)而不是墙壁分隔你想要块的单元格。
在开始算法之前,将任意数量的单元标记为块。按照您的来源中概述的方式进行操作,但不要考虑任何块单元。如果您想保证迷宫中的完全可访问性,则必须采取特殊的预防措施。一个简单的方案是永远不要将单元格标记为具有超过 1 个块作为邻居的块。
希望这些想法适合您的需求,
最好的问候,卡斯滕
于 2011-05-26T08:46:38.057 回答