gpt4 book ai didi

java - 为什么我的 Java 迷宫不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:52 28 4
gpt4 key购买 nike

代码:

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();
}
}
}

每当我打印我的迷宫时,似乎迷宫中的每个点都会返回一个真实值,因此用星号标记。有什么地方我做错了吗,如有任何帮助,我们将不胜感激。

最佳答案

问题是您使用 boolean 数组来指示两个不同的事物:

1) 那里有一堵墙(最初在数组中设置为 true)

2) 您已经访问过该图 block (在迷宫解算器期间设置为 true)

相反,您需要保留两个数组,并同时勾选 - 不要走到墙上或选中的瓷砖上,但当您走到新的瓷砖上时,只需将其设置为选中状态,而不是墙壁。然后,您将能够打印 -wall -reached by solver -unreached by solver 作为不同的字符。

(我假设 generateMaze() 被错误命名并且实际上传递了一个在其他地方制作的生成迷宫。如果它传递了一个空迷宫,那么问题是你需要先制作一个迷宫;))

关于java - 为什么我的 Java 迷宫不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422517/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com