我正在研究一个迷宫而且被卡住了。使用JFileChooser,我可以导入和读入.txt文件中的迷宫,其中一系列空格和主题标签确定路径和墙。 String path = " ";
和String wall = "#";
这是现在做的所有方法:
@Override
public void readMaze() throws FileNotFoundException
{
int row;
int col;
JFileChooser chooser = new JFileChooser();
Scanner in = null;
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
File selectedFile = chooser.getSelectedFile();
in = new Scanner(selectedFile);
/*READ FILE*/
Scanner readLine = new Scanner (new FileReader(selectedFile));
col = readLine.nextInt();//first reading
System.out.println(col);
row = readLine.nextInt(); //second reading
System.out.println(row);
Array[][] array = new Array[row][col];
do
{
String i = readLine.nextLine();
//System.out.println(i);
for (int j = 0; j < i.length(); j++)
{
String compare = i.substring(j, j+1);
if(compare.equals(wall))
{
//Do nothing, see if there's a path adjacent.
System.out.println("Wall");
}
if(compare.equals(path))
{
System.out.println("Path");
//Check for additional paths.
// don't if explored
//else explore
}
}
} while(readLine.hasNextLine() == true);
readLine.close();
}
}
这是我们现在的界面,如果重要的话: public interface lab3MVCInterface
{
enum direction {N, S, E, W};
void readMaze() throws FileNotFoundException;
void solveMaze();
JFileChooser chooser = new JFileChooser();
Scanner in = null;
String wall = "#";
String path = " ";
void readMaze(JFileChooser chooser, Scanner in)
throws FileNotFoundException;
}
但是我们没有任何线索如何确定是否有路径。这是一个课堂作业,所以我不是在寻找答案,但我希望在正确的方向上指出正确的方法。对于赋值,我们可以使用递归或堆栈来完成它...我们决定递归,因为堆栈在我们结束时是一场噩梦。
感谢您的协助! :)我知道在过去我没有跟进线程,但是我正在努力更新它们(在我丢失了我的帐户的密码后,我把自己锁在了电子邮件之外。去了。)我们说话! p>
编辑:这是从.txt文件打开的代码示例: (第一个数字设置数组[col] []值,第二个数字设置数组[] [row]值以进行大小调整。)
7
7
#######
###
### ###
### ###
#
### ###
#######
答案 0 :(得分:1)
首先,我不认为Array[][]
是用于2D字符数组的正确数据类型。也许你可以改用char[][]
,因为每个元素都是' '
或'#'
。
其次,你可以做的是从&#34;条目开始&#34;迷宫的点,并将' '
更改为'.'
以表示&#34;我可以到达这里&#34 ;;然后,如果' '
与'.'
相邻,则将'.'
更改为'.'
。
泡沫,冲洗并重复,直到你到达终点,或者用完字符变为{{1}}(在这种情况下迷宫是不可能的)。
答案 1 :(得分:0)
这个问题很容易转化为图遍历问题。想象迷宫的每个“路径”点作为图形的顶点,并且当且仅当它们在迷宫中直接相邻时,在两个顶点之间添加边缘。之后,您可以使用BFS或DFS算法来查找是否存在从迷宫的起始顶点到结束顶点的路径。 如果使用BFS,您甚至不必显式构建图形,迷宫的2D数组也可以。对于每个顶点,您可以在4个方向上进行检查,检查它是否不在界限范围内且是否可访问(是空格字符),检查是否已经访问过它,如果没有将其添加到队列中。
希望这能为你提供进一步研究的足够指示。