如何用路径创建迷宫

时间:2017-04-25 20:56:09

标签: java maze

我需要创建迷宫,

首先,我尝试将'O'或'B'随机插入二维数组然后随机放入退出并开始。但问题是我创建的10个迷宫中有9个没有路径(开始不会导致退出,'O'是开放路径);

所以我要做的就是创建一条从开始到退出至少有一条路径的路径。

起点不能是边界和出口点只能是边界。

B B B B B B
B B B B B B
B B B B S B
B B B B B B
B B X B B B

基本上我想创建一个退出路径,某些路径不会导致退出。

示例:

B B B B B B
B B O O O B
B B B B S B
B B O O O B (doesn't have to be this shape, this is just an example what I want to create)
B B X B B B

这是我的代码:

public static void randomly(int sx, int sy){ //sx and sy is the location of the startpoint
int x[] ={-1,0,0,1};
int y[] ={0,-1,1,0};
int count;
boolean check = false;
int afterX, afterY;
for(int i = 0 ; i < 4; i++){
  afterX = sx + x[i];
  afterY = sy + y[i];
  if(maze[afterX][afterY] == 'X'){
    return;
  }
}
do{
  count = 0;
  int number = (int)(Math.random()* 4);
  afterX = sx + x[number];
  afterY = sy + y[number];
  if(afterX > 0 && afterY > 0 && afterX < row-1 && afterY<column-1){
    maze[afterX][afterY] = 'O';
  }

  }
}while((afterX == 0 || afterY == 0 || afterX == row-1 || afterY == column-1) && check);

randomly(afterX,afterY);
}

问题在于我得到了这个:

B B B B B B
B B O O B B
B O O O S B
B O O O O B
B B X B B B

我并不总能得到这个,但大多数时候

问题在于'O'通常会粘在一起,但我想要的是上面给出的例子

0 个答案:

没有答案