代码:
数组是我做的预定义的布尔数组,而val是数组的长度(它是一个正方形)。我用它作为一个起点,而不是使用一个随机值迷宫不工作?
import java.util.*;
import javax.swing.*;
public class Main
{
public void main()
{
String Val = JOptionPane.showInputDialog("Enter the number of rows/columns");
int x = Integer.parseInt(Val);
boolean mazeArch[][] = new boolean [x][x];
BoundariesDeclared(mazeArch, x);
generateMaze(mazeArch, x);
convertArray(mazeArch, x);
}
public void printArray(String Array[][]) // Prints out the array
{
for (int i =0; i < Array.length; i++) {
for (int j = 0; j < Array.length; j++) {
System.out.print(" " + Array[i][j]);
}
System.out.println("");
}
}
public void convertArray(boolean Array[][], int z)
{
String RealArray[][] = new String [z][z];
for(int x = 0; x < Array.length; x++)
{
for(int y = 0; y < Array.length; y++)
{
if(Array[x][y] == true)
{
RealArray[x][y] = "*";
}
if(Array[x][y] == false)
{
RealArray[x][y] = " ";
}
}
}
printArray(RealArray);
}
public void BoundariesDeclared(boolean Array[][], int y)
{
for(int x = 0; x < Array.length; x++)
Array[0][x] = true;
for (int x = 0; x < Array.length; x++)
Array[x][0] = true;
for (int x = 0; x < Array.length; x++)
Array[x][Array.length-1] = true;
for (int x = 0; x < Array.length; x++)
Array[Array.length-1][x] = true;
}
public void generateMaze(boolean Array[][], int val)
{
Stack<Integer> StackX = new Stack<Integer>();
Stack<Integer> StackY = new Stack<Integer>();
int x = val/2; // Start in the middle
int y = val/2; // Start in the middle
StackX.push(x);
StackY.push(y);
while(!StackX.isEmpty())
{
Array[x][y] = true; // is Visited
x = StackX.peek();
y = StackY.peek();
if(Array[x][y+1] == false)
{
StackX.push(x);
StackY.push(y+1);
y = y + 1;
}
else if(Array[x][y-1] == false)
{
StackX.push(x);
StackY.push(y-1);
y = y - 1;
}
else if(Array[x+1][y] == false)
{
StackX.push(x+1);
StackY.push(y);
x = x+1;
}
else if(Array[x-1][y] == false)
{
StackX.push(x-1);
StackY.push(y);
x = x-1;
}
else
{
StackX.pop();
StackY.pop();
}
}
}}
每当我打印结果,我只得到星,这意味着,每一个布尔值设置为true。我明白我的错误,因为我访问的每一个地方的结果都是他们都设置为真。但是,我能做些什么来解决这个问题?我认为我有正确的概念,而不是应用程序。我以前问过这个问题,并被告知我需要制作两个阵列(1个用于墙壁,另一个用于访问),但我怎样才能应用这个呢?
_“我能做些什么来解决这个问题?”_我们应该怎么知道?你明确表示不应该将所有内容都设置为“true”,但是你不能解释它应该做什么。 – 2013-03-15 03:24:35
据我了解,在访问了相邻小区后,必须将小区设置为true,以确保该小区不会再次访问。这就是为什么它应该设置为true – svsav 2013-03-15 03:26:16
你还可以发布如何调用你的方法generateMaze,包括布尔数组和val初始化。 – Drogba 2013-03-15 03:29:58