我不小心将此问题发布在我的其他帐户上,因此我删除了该帖子并转发到此帐户。
所以我想创建一个有趣的迷宫生成算法,但我碰到了一点点。我写的算法放在无法访问且没有退出的空间中。问题是什么?
这就是我的意思
# # # # # # # # # # # # # # # # # # # # #
# . . . . . # . # . . . # . # . # . . . #
# . # # # . # . # # # . # # # . # # # # #
# . . . # . # . # . . . . . # . . . . . #
# # # . # . # . # # # # # . # # # . # # #
# . . . # . # . . . . . # . # . # . # . #
# . # # # . # # # # # . # # # . # . # . #
# . # . # . . . . . # . . . . . . . # . #
# . # . # . # # # # # # # . # # # . # # #
# . # . # . . . . . . . # . . . # . # . #
# . # . # # # # # # # . # . # . # # # . #
# . # . # . . . . . . . # . # . # . . . #
# # # # # . # # # # # # # . # . # . # # #
# . # . . . # . . . . . . . # . # . # . #
# . # # # . # . # # # # # # # # # . # # #
# . . . # . . . # . # . . . . . . . # . #
# # # . # # # . # # # # # # # . # # # . #
# . # . # . . . . . # . . . # . . . . . #
# # # . # . # # # . # . # # # . # # # . #
# . # . . . # . # . # . # . . . . . # . #
# # # # # # # # # # # # # # # # # # # # #
这是我的代码
说明:
创建一个由完全连接的单元组成的迷宫。如上所述0向上,1向下,2向右,3向左,orientTo记录dfs是上/下/左/右进入当前单元格。
在mazeGen函数中:生成您来自的单元格,现在删除当前单元格和最后一个单元格之间的墙。生成当前单元格的所有邻居并随机将它们排列成一个数组,数组保存x,y,以及dfs移动到达此邻居单元格的方式。现在迭代遍历此数组并使用这些邻居值递归调用dfs。
答案 0 :(得分:2)
我认为迷宫空间(非墙)应该是一棵树。这意味着,所有空间都连通在一起,每对空间之间只有一条路径。
由于树没有循环,因此可以通过破坏找到的任何循环来创建迷宫。可以通过查找循环(DFS)并将检测到的循环中的任何空间设置为墙壁直到没有循环来完成。它可以在一个DFS传递中完成。通过选择不同的起始空间并随机选择邻居来继续创建不同的迷宫。