代碼:
數組是我做的預定義的布爾數組,而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