Ayuda con laberinto sencillo en Java
Publicado por Meneth (1 intervención) el 22/02/2020 13:13:49
Hola, me gustaría saber si alguien puede ayudarme con esto.
Tengo que hacer un ejercicio que consiste en un laberinto sencillo basado en la vecindad de las matrices.
He conseguido que el "personaje" (que consiste en el caracter ©) resuelva el laberinto, pero no consigo hacer que no avance cuando haya una pared por medio.
Dejo aquí el laberinto, y el movimiento que hace por ejemplo al moverse hacia arriba:
La matriz del laberinto:
El método que guarda la posicion del jugador:
[url]public int[] posJugador(char[][] laberinto, int[] posicion_jugador){
for(int i=0;i<laberinto.length;i++){
for(int j=0;j<laberinto[0].length;j++){
if(laberinto[i][j]=='©'){
posicion_jugador[0]=i;
posicion_jugador[1]=j;
}
}
}
return posicion_jugador;
}[/url]
Y el método que hace que el jugador se mueva hacia arriba:
El problema es que cuando encuentra una pared en cualquier dirección, el jugador sigue avanzando hasta que llega al límite de la matriz y da un error en el el programa, no sé como arreglar eso y que el jugador se quede en su sitio en lugar de seguir avanzando.
Tengo que hacer un ejercicio que consiste en un laberinto sencillo basado en la vecindad de las matrices.
He conseguido que el "personaje" (que consiste en el caracter ©) resuelva el laberinto, pero no consigo hacer que no avance cuando haya una pared por medio.
Dejo aquí el laberinto, y el movimiento que hace por ejemplo al moverse hacia arriba:
La matriz del laberinto:
1
2
3
4
5
6
7
char[][] laberinto={
{'|','-','-','-','-','-','-'},
{'|',' ','|',' ',' ',' ','|'},
{'|','©','|',' ','|',' ','|'},
{'|',' ',' ',' ','|',' ',' '},
{'|','-','-','-','-','-','-'},
};
El método que guarda la posicion del jugador:
[url]public int[] posJugador(char[][] laberinto, int[] posicion_jugador){
for(int i=0;i<laberinto.length;i++){
for(int j=0;j<laberinto[0].length;j++){
if(laberinto[i][j]=='©'){
posicion_jugador[0]=i;
posicion_jugador[1]=j;
}
}
}
return posicion_jugador;
}[/url]
Y el método que hace que el jugador se mueva hacia arriba:
1
2
3
4
5
6
7
8
9
10
11
12
13
public int[] moverArriba(char[][] laberinto,int[] posicion_jugador){
for(int i=0;i<laberinto.length;i++){
for(int j=0;j<laberinto[0].length;j++){
if(i==posicion_jugador[0] && j==posicion_jugador[1] && laberinto[i][j]=='©'){
laberinto[i][j]=' ';
laberinto[i-1][j]='©';
}
}
}
return posicion_jugador;
}
El problema es que cuando encuentra una pared en cualquier dirección, el jugador sigue avanzando hasta que llega al límite de la matriz y da un error en el el programa, no sé como arreglar eso y que el jugador se quede en su sitio en lugar de seguir avanzando.
Valora esta pregunta


0