我需要创建迷宫,
首先,我尝试将'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'通常会粘在一起,但我想要的是上面给出的例子