非完美迷宫生成

时间:2019-02-24 23:07:59

标签: java algorithm path-finding maze pathfinder

我已经为项目编码了A *算法。该项目的要求之一是随机生成50个迷宫。

我有点困惑,因为这与正常的迷宫时代不同。在几代迷宫中,您已阻塞和未阻塞的墙,而就我而言,我需要已阻塞和未阻塞的砖。它也不是完美的(应该有多个路径)。我实际上还无法在线找到适合这种情况的算法或说明。做到这一点的最佳方法是什么?如果可能的话,我还想指定一个起点+终点,否则就只能指定一个起点。谢谢!

这是我手动生成的迷宫示例(较小规模):

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以为每个图块随机分配一个值(代表已阻止或未阻止)。完成后,指定起点和终点。
结果可能类似于this
如果您喜欢使用迷宫生成算法,请使用以下广泛可用的资源之一:12

答案 1 :(得分:1)

您可以使用联合查找数据结构来执行此操作,类似于使用Kruskal算法生成迷宫:

  • 选择起点和终点
  • 将除开始和结束之外的每个单元格标记为已阻止,并将每个单元格放入自己的集合中
  • 随机疏通细胞。取消阻止某个单元时,请将其集合与该单元所连接的所有未阻止单元的集合合并。
  • 当起始单元格的集合与结束单元格的集合合并时停止。

现在从头到尾都有一条路径。如果您想确保迷宫更加开放,则可以保持随机解锁,直到至少有70%的解锁。

结果看起来不太像传统的迷宫,但可能对A *测试很有用。