Javascript 迷宫(递归除法)算法设计

Javascript 迷宫(递归除法)算法设计,javascript,algorithm,recursion,Javascript,Algorithm,Recursion,我目前正在开发一个随机迷宫生成器,它将迷宫存储在一个名为网格的二维数组中。这将在以后用于生成一个真实的3D迷宫,用户可以在其中穿行 在做了一些研究之后,我尝试使用递归除法算法创建这个迷宫生成器,但是由于迷宫格式的性质,这对我来说并不适用 据我所知,递归除法不将墙视为单元 例如,我的网格如下所示: a b c d e f g h 1 - - - - - - - - 2 | | | | | 3 | | | 4 | - - | - | 5 | |

我目前正在开发一个随机迷宫生成器,它将迷宫存储在一个名为
网格
的二维数组中。这将在以后用于生成一个真实的3D迷宫,用户可以在其中穿行

在做了一些研究之后,我尝试使用递归除法算法创建这个迷宫生成器,但是由于迷宫格式的性质,这对我来说并不适用

据我所知,递归除法不将墙视为单元

例如,我的网格如下所示:

  a b c d e f g h
1 - - - - - - - -
2 |   |   | |   |
3 |       |     |
4 | -   - |   - |
5 |     |     | |
6 |   - |   -   |
7 x             |
8 - - - - - - - -
w w w w w w w w
w   w   w w   w
w       w     w
w w   w w   w w
w     w     w w
w   w w   w   w
g             w
w w w w w w w w
我在这里试图说明的一点是,我试图创建的网格将表示如下:

  a b c d e f g h
1 - - - - - - - -
2 |   |   | |   |
3 |       |     |
4 | -   - |   - |
5 |     |     | |
6 |   - |   -   |
7 x             |
8 - - - - - - - -
w w w w w w w w
w   w   w w   w
w       w     w
w w   w w   w w
w     w     w w
w   w w   w   w
g             w
w w w w w w w w
其中“w”是一面墙,“g”是入口/出口。因此,墙被放置到网格中,例如,
grid[1][2]='w'

递归除法算法的问题是墙不被视为单元的成员。所有的“单元”基本上都包含空格,并且在它们周围放置墙

所以当我尝试在我的情况下实现这个算法时,我得到了这样的结果:(黑色方块是墙,白色方块是空的,红色方块是入口)

基本上,用户将从红场开始,必须穿过迷宫,找到可以打开门(即红场)的钥匙才能逃生,因此迷宫中的所有空白都必须可以访问

有没有人对我如何重写这个算法有什么想法,以确保从红场到迷宫中任何其他空间都有一条路径?理想情况下,道路的宽度永远不会超过一平方米

代码:
var网格;
函数生成(维度、numDoors){
//numDoors现在未使用
网格=新数组();
对于(变量i=0;i对于(var i=minX;i只将墙放在偶数单元格中,将门放在奇数单元格中,并将“尺寸”设为奇数。

代码:
var网格;
函数生成(维度、numDoors){
网格=新数组();
对于(变量i=0;i对于(var i=minX;i)这太完美了!那么你改变了什么呢?另外,我会看到Math.floor(randomNumber(minY,maxY)/2)*2;var x=Math.floor(randomNumber(minX,maxX)/2)*2;,另外,我会看到var hole=Math.floor(randomNumber(minY,maxY)/2)*2+1;,另外,我会看到var hole=Math.floor(randomnomnumber(minY,maxY)/2)*2+1;哇,原来是我的随机数关闭了?:P谢谢!