6

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

4

1 回答 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 回答