Boa noite, tenho que fazer um trabalho da faculdade sobre labirinto e não consigo evoluir no mesmo, até o momento meu código está dessa maneira:
package labirinto;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class Teste
{
static char cel[][];
public static void main(String args[])
{
int QntLinhas = 0;
int QntColunas = 0;
try {
FileReader f = new FileReader("labirinto.txt");
BufferedReader in = new BufferedReader(f);
String linha;
while ((linha = in.readLine()) != null) {
QntLinhas++;
QntColunas = linha.length();
}
in.close();
}
catch (IOException e) {
}
System.out.println(QntLinhas);
System.out.println(QntColunas);
cel = new char[QntLinhas][QntColunas];
try {
FileReader f = new FileReader("labirinto.txt");
BufferedReader in = new BufferedReader(f);
String linha;
int i = 0;
while ((linha = in.readLine()) != null) {
for (int j = 0; j < QntColunas; j++) {
cel[i][j] = linha.charAt(j);
}
i++;
}
in.close();
} catch (IOException e) {
}
mostra(cel);
achaSaida(12, 12);
mostra(cel);
}
private static void mostra(char z[][])
{
for (int linha = 0; linha < z.length; linha++) {
System.out.println();
for (int coluna = 0; coluna < z[linha].length; coluna++) {
System.out.print(z[linha][coluna]);
}
}
System.out.println();
}
private static void achaSaida(int x, int y)
{
if (cel[x][y] == 'D'){
System.out.println("Achei a saida em linha " + x + " coluna: " + y );
}
else{
if (cel[x][y] == ' ' || cel[x][y] == 'D') {
cel[x][y] = '+';
}
if (cel[x-1][y] == ' ' || cel[x-1][y] == 'D') {
achaSaida(x-1, y);
}
if (cel[x][y+1] == 'X' || cel[x][y+1] == 'D') {
achaSaida(x, y+1);
}
if (cel[x][y-1] == 'X' || cel[x][y-1] == 'D') {
achaSaida(x, y-1);
}
}
}
}
Porém o trabalho pede:
O labirinto será um array bidimensional de caracteres. No labirinto, posições com ‘X’ indicam que não é possível passar, enquanto posições com ’ ’ (espaço) indicam que é possível a passagem. O local de destino está marcado no labirinto com a letra ‘D’.
O ponto inicial sempre será a posição [0][0] do array .
Os métodos seguintes eu não estou conseguindo implementar no código:
1.Criar um método chamado " carregaLabirinto ", que recebe por parâmetro uma String fileName e retorna um array bidimensional de caracteres. Este método abre o arquivo indicado por fileName e retorna um array de caracteres, representado no arquivo.
- Criar um método recursivo (com métodos público e privado) chamado labirinto, que recebe um array de caracteres e retorna verdadeiro caso exista pelo menos um caminho para chegar ao destino e falso caso não exista. No método público, para criar o array , você deve chamar o método carregaLabirinto , criado na parte 1.
Se poderem me ajudar, agradeço.