具有块而不是墙的深度优先搜索迷宫生成算法

时间:2011-05-21 16:40:48

标签: algorithm depth-first-search maze

我正在尝试将深度优先搜索算法应用到我的游戏中。我一直在研究这个网页:http://www.mazeworks.com/mazegen/mazetut/index.htm,但却发现我无法用块而不是Wall来使用它。我所说的块是一个覆盖整个单元格的正方形,而不仅仅是边缘。我认为用这种方式做起来会更容易,但现在我不太确定。有没有人这样做过?如果是这样,怎么样? (伪代码很好)。或者,如果它更容易,我应该选择墙壁方法吗?

1 个答案:

答案 0 :(得分:4)

取决于您实际希望实现的目标,我有两种解决方案。 它们基本上都是您引用的网站上显示的算法。

1。)迷宫中预定位置有块

  • 您在2*k+1网格
  • 上运行算法
  • 假设您的单元格编号从左上角开始(0,0)。 将所有具有2个奇数坐标((2*p+1, 2*q+1); p,q < k)的单元格标记为块。
  • 您在剩余的单元格('偶数单元格')上从源中运行修改后的算法。 修改是:
    • 从随机挑选的偶数单元格开始
    • '邻居小区'是任何网格方向上的第二个但是下一个小区; 即你'跳过'砖。
    • 而不是撞倒细胞之间的墙壁, 你把块变成一个可访问的单元格。 但是,选择不会考虑此单元格 和回溯

2。)而不是墙壁分隔你想要块的细胞。

在开始算法之前,将任意数量的单元格标记为块。 按照源中的说明进行操作,但从不考虑任何块单元格。    如果您想要保证,您必须采取特殊预防措施 迷宫中的完全可访问性。一个简单的方案是永远不会标记一个单元格 作为一个具有超过1个块作为邻居的块。

希望这些想法符合您的需求,

最好的问候,carsten