|
Indice | Temas Recientes | Quién Está en LÃnea | Lista de Usuarios | Mi Perfil | Búsqueda | Ayuda |
![]() |
mvnForum » Listar todos los foros » Foro: Curso PLJ » Tema: Aun sigo con los problemas del laberinto |
Total de mensajes en este tema: 3 |
[Eliminar este Tema]
[Mover este Tema] [AÅadir a Mis Favoritos] [AÅadir un aviso a este tema] [Publicar nuevo tema] |
Autor |
|
![]() Extranjero
|
Bueno ya llevo casi cuatro horas esta tarde, haciendo mil y una pruebas y el robot me aperece y se mueve pero aleatoriamente desaparece ocupando zonas que no tiene que ocupar, es como si el metodo ocupado de la clase laberinto no me estuviera devolviendo bien el valor, package modulo1.sesion5; public class Controlador { EstadoJuego estado; public Controlador(EstadoJuego estado) { this.estado = estado; } public void pasoEjecucion(int comando) { Jugador jugador, enemigo; Laberinto lab; Posicion posJugador, posEnemigo, posAux; if (comando == JuegoLaberinto.SALIR) { estado.finJuego = true; estado.ganador = false; return; } jugador = estado.jugador; lab = estado.laberinto; enemigo = estado.enemigo; // Añadido por mi // realizo el movimiento del jugador posJugador = jugador.getPos(); posAux = new Posicion(posJugador.fila, posJugador.columna); posAux.mueve(comando); if (!lab.ocupado(posAux)) posJugador.mueve(comando); // Realizamos el mov. del robot posEnemigo = enemigo.getPos(); // Obtenemos pos. actual del robot. Posicion posAuxRobot = new Posicion(posEnemigo.fila, posJugador.columna); if (!lab.ocupado(posAuxRobot.fila+1, posAuxRobot.columna)) comando = JuegoLaberinto.ABAJO; else if (!lab.ocupado(posAuxRobot.fila-1, posAuxRobot.columna)) comando = JuegoLaberinto.ARRIBA; else if (!lab.ocupado(posAuxRobot.fila, posAuxRobot.columna+1)) comando = JuegoLaberinto.DERECHA; else if (!lab.ocupado(posAuxRobot.fila, posAuxRobot.columna-1)) comando = JuegoLaberinto.IZQUIERDA; if (!lab.ocupado(posAuxRobot)) posEnemigo.mueve(comando); // El jugador ha salido del laberinto if (posJugador.columna == 0 || posJugador.columna == lab.getColumnas() - 1 || posJugador.fila == 0 || posJugador.fila == lab.getFilas() - 1) { estado.finJuego = true; estado.ganador = true; estado.perdedor = false; } if (posEnemigo.columna == 0 || posEnemigo.columna == lab.getColumnas() - 1 || posEnemigo.fila == 0 || posEnemigo.fila == lab.getFilas() - 1) { estado.finJuego = true; estado.ganador = false; estado.perdedor = true; } } public boolean finJuego() { return estado.finJuego; } Ya por hoy lo voy a dejar porque estoy un poquito desquiciado, indicame si lo puedo entregar ya asà y dime donde está el error porque estoy de los nervios, gracias y un saludo. |
||
|
![]() Extranjero
|
Te comento un par de fallos que veo en tu código, por lo que no te funciona:
- Aquà estás cogiendo la columna del jugador, no la del robot.
- El último if no te harÃa falta, ya que en él estarÃas (si en el constructor anterior utilizases bien los parámetros) comprobando la posición actual del robot, ya que no varÃas posAuxRobot en ningún momento. - Tal vez el código te quedarÃa más claro si utilizases el movimiento aleatorio, este código no es exactamente el que he utilizado, pero creo que funcionará: posEnemigo = enemigo.getPos(); int cmdEnemigo = 0; do { cmdEnemigo = (int) (Math.random() * 4); posAux = new Posicion(posEnemigo.fila, posEnemigo.columna); posAux.mueve(cmdEnemigo); } while(lab.ocupado(posAux)) ; posEnemigo.mueve(cmdEnemigo); - Espero que te sirva de algo. |
||||||
|
![]() Extranjero
|
Gracias compañero porque estaba ya desquiciado, el problema era esta linea de codigo: Posicion posAuxRobot = new Posicion(posEnemigo.fila, posJugador.columna); Lo he probado y ahora me va de tu forma y de la mia, por fin lo he podido entregar bien hecho. Me has hecho un gran favor, muchas gracias. |
||
|
[Versión imprimible] [Publicar nuevo tema] |