递归迷宫生成

时间:2014-01-12 18:46:56

标签: java algorithm recursion

我不小心将此问题发布在我的其他帐户上,因此我删除了该帖子并转发到此帐户。

所以我想创建一个有趣的迷宫生成算法,但我碰到了一点点。我写的算法放在无法访问且没有退出的空间中。问题是什么?

这就是我的意思

# # # # # # # # # # # # # # # # # # # # # 
# . . . . . # . # . . . # . # . # . . . # 
# . # # # . # . # # # . # # # . # # # # # 
# . . . # . # . # . . . . . # . . . . . # 
# # # . # . # . # # # # # . # # # . # # # 
# . . . # . # . . . . . # . # . # . # . # 
# . # # # . # # # # # . # # # . # . # . # 
# . # . # . . . . . # . . . . . . . # . # 
# . # . # . # # # # # # # . # # # . # # # 
# . # . # . . . . . . . # . . . # . # . # 
# . # . # # # # # # # . # . # . # # # . # 
# . # . # . . . . . . . # . # . # . . . # 
# # # # # . # # # # # # # . # . # . # # # 
# . # . . . # . . . . . . . # . # . # . # 
# . # # # . # . # # # # # # # # # . # # # 
# . . . # . . . # . # . . . . . . . # . # 
# # # . # # # . # # # # # # # . # # # . # 
# . # . # . . . . . # . . . # . . . . . # 
# # # . # . # # # . # . # # # . # # # . # 
# . # . . . # . # . # . # . . . . . # . # 
# # # # # # # # # # # # # # # # # # # # # 

这是我的代码
说明:
创建一个由完全连接的单元组成的迷宫。如上所述0向上,1向下,2向右,3向左,orientTo记录dfs是上/下/左/右进入当前单元格。 在mazeGen函数中:生成您来自的单元格,现在删除当前单元格和最后一个单元格之间的墙。生成当前单元格的所有邻居并随机将它们排列成一个数组,数组保存x,y,以及dfs移动到达此邻居单元格的方式。现在迭代遍历此数组并使用这些邻居值递归调用dfs。

1 个答案:

答案 0 :(得分:2)

我认为迷宫空间(非墙)应该是一棵树。这意味着,所有空间都连通在一起,每对空间之间只有一条路径。

由于树没有循环,因此可以通过破坏找到的任何循环来创建迷宫。可以通过查找循环(​​DFS)并将检测到的循环中的任何空间设置为墙壁直到没有循环来完成。它可以在一个DFS传递中完成。通过选择不同的起始空间并随机选择邻居来继续创建不同的迷宫。