Answers:
有很多制作迷宫的方法。这里有大量的列表及其说明:http : //www.astrolog.org/labyrnth/algrithm.htm
我想我使用了“完美”下描述的内容。
我更喜欢Kruskal算法创建的紧密缠绕的迷宫。
Kruskal算法的标准描述是不合适的,因为它无法区分图中的位置和位置组,而依赖于关于数据结构选择的双关语,从而导致描述模糊,使新手感到困惑。因此,我拒绝克鲁斯卡尔的术语。
我将使用以下术语:
从这些中,我们得到:
一种简单的方法是列出北墙和西墙,然后对其进行置换。给每个房间一个号码。然后,炸毁列表中的一堵墙,只要两个房间没有相同的编号,然后将这些编号之一传播到所有其他具有相同编号的房间。继续走下去,直到用完墙壁。这适用于矩形迷宫,或者实际上是任何其他迷宫,您可以在其中给出“潜在连接的房间”列表。另外,编程非常简单。
这里运行得很好:https : //journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
基本步骤是:
代码在这里:https : //github.com/munificent/hauberk/blob/db360d9efa714efb6d937c31953ef849c7394a39/lib/src/content/dungeon.dart
您问我使用了哪一个,所以我一定会回答。我在Rootbeer Games的迷宫游戏中使用了递归Backtracker算法。
这证明我使用了该算法,请不要将其视为我工作的广告。