Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > ayuda backtraking laberinto

Hola amigos, espero y se encuentren bien, queria saber si me pueden ayudar, necesito hacer un backtraking de laberinto tengo q leer un txt, y guardarlo en un arreglo bidimensional y luego hacer la busqueda mas corta, ya tengo la parte donde lee el txt
if(tecla==KeyEvent.VK_G){

try {
File f= new File ("laberinto.txt");
FileWriter abrir = new FileWriter (f,false);
PrintWriter salida = new PrintWriter(abrir);
int elementos =19;
for (int i=0; i< rectangulos.size();i++){
if(rectangulos.get(i).getColor()==Color.BLACK){
salida.print("1");
}
else if(rectangulos.get(i).getColor()==Color.RED){
salida.print("s");
}
else if(rectangulos.get(i).getColor()==Color.GREEN){
salida.print("e");
}
else{
salida.print("0");
}
if(i==elementos){
elementos+=20;
salida.println("");
}

}
System.out.println("");
salida.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}


}
}

y la parte de busqueda
public class Laberinto {

private static char L = 'L'; // pared
private static char E = '0'; // espacio en blanco
private static char MARCA = '*'; // señala las posiciones visitadas
private static int x0 = 1; // inicio X
private static int y0 = 0; // inicio Y
/*
* private static int xf = 11; // salida X private static int yf = 20; //
* salida Y
*/

private static ObtenerTxt txt = new ObtenerTxt();

public static boolean valida(int f, int c) {
// controla si la posicion esta fuera del laberinto
if (f < 0 || f == txt.inicioFila || c < 0 || c == txt.inicioColumna) {
return false;
}
// controla si la posicion ya fue visitada o es muro
if (txt.getLectura()[f][c] == MARCA || txt.getLectura()[f][c] == L) {
return false;
}
return true;
}

public static boolean recorre(int fil, int col) {
boolean listo = false; // Indica si se ha encontrado la salida
// Se marca la casilla como visitada
txt.getLectura()[fil][col] = MARCA;
// Condicion de termino de recursividad: " Llegamos a la salida ?"
if (fil == txt.finFila - 2 && col == txt.finColumna - 1) {
return (true);
}
if (!listo && valida(fil - 1, col)) { /* Intento hacia arriba */
listo = recorre(fil - 1, col);
}
if (!listo && valida(fil, col + 1)) { /* Intento a la derecha */
listo = recorre(fil, col + 1);
}
if (!listo && valida(fil + 1, col)) { /* Intento hacia abajo */
listo = recorre(fil + 1, col);
}
if (!listo && valida(fil, col - 1)) { /* Intento a la izquierda */
listo = recorre(fil, col - 1);
}

if (!listo) {
txt.getLectura()[fil][col] = E;
}
// Se retorna true / false dependiendo de si se encontro solucion
return (listo);
}

public static void main(String[] args) {
System.out.println("LABERINTO PROPUESTO:");
desplegarArreglo(txt.lectura);
System.out.println("LABERINTO RESUELTO");
recorre(x0, y0);
desplegarArreglo(txt.lectura);
}

public static void desplegarArreglo(char[][] matriz) {
for (int i = 0; i < matriz.length; ++i) {
String texto = new String("");
for (int j = 0; j < matriz.length; ++j) {
texto += matriz[i][j] + " ";
}
System.out.println(texto);
}
}
}
pero al momento de querer buscar no logro que me muestre elr esultado, espero y me puedan orientar. gracias


este es mi txt.
LLLLLLLLLLLLLLL
L0000000000000L
L0000000000000L
L0000000000000L
L0000000000000L
L0000000000000L
L00000s0000000L
L0000000000000L
L0000000000000L
L000000000e000L
L0000000000000L
L0000000000000L
L0000000000000L
L0000000000000L
LLLLLLLLLLLLLLL

la parte e = entrada, s= salida.

octubre 14, 2015 | Registered Commenterfenixskate