Я работаю над лабиринтом и застрял. Используя 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();
}
}
Это наш интерфейс на данный момент, если это имеет значение: открытый интерфейс 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;
}
Но мы понятия не имеем, как определить, есть ли путь или нет. Это классное задание, поэтому я не ищу ответов, но был бы признателен за указатели в правильном направлении при правильном подходе. Для задания мы можем использовать рекурсию или стеки, чтобы завершить его... мы выбрали рекурсию, так как стеки были кошмаром для нас.
Спасибо вам за вашу помощь!! :) Я знаю, что в прошлом я не следил за темами, но я прилагаю усилия, чтобы обновить их (я заблокировал себя от электронной почты после потери пароля для своей учетной записи. Поди разберись), как мы говорим!
Редактировать: Вот пример кода, открытого из файла .txt: (Первое число устанавливает значение массива [col] [], второе устанавливает значение массива [][row] для размера.)
7
7
#######
###
### ###
### ###
#
### ###
#######