mvnForum Homepage Bienvenido domingo  |  Terminar sesión   
  Búsqueda  
  Indice |  Temas Recientes |  Quién Está en Línea |  Lista de Usuarios |  Mi Perfil |  Búsqueda |  Ayuda


Ir a »
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
Tema Anterior Este tema ha sido visto 55 veces y tiene 2 respuestas Tema Siguiente
Femenino vcc1
Extranjero



Ingresó: Jul 1, 2004
Mensajes: 11
Estado: Desconectados

Adjuntar archivo   Editar este mensaje   Problemas con el laberinto Responder a este mensaje
Responder citando
[Eliminar este Tema]

Buenas, aun estoy liado con el laberinto y ya creo que le he dedicamos muchas horas a este programa, pero es que esto de leer o coger la lógica de un prog. hecho por otro es mas dificil
de lo que me pensaba, bueno os explico mi problema, ya en la clase vista he añadido al robot y la clase vista me enseña el robot '-', pero ahora me voy a mover al robot y lo hago de la
siguiente manera:

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);

// MOVIMIENTO DEL ROBOT
// Obtenemos pos. actual del robot.

posEnemigo = enemigo.getPos();
Posicion posAuxRobot = new Posicion (posEnemigo.fila,posJugador.columna);
if (lab.ocupadoDireccion (posAuxRobot.fila,posAuxRobot.columna,JuegoLaberinto.ARRIBA))
comando = JuegoLaberinto.ARRIBA;
else if (lab.ocupadoDireccion(posAuxRobot.fila,posAuxRobot.columna,JuegoLaberinto.ABAJO))
comando = JuegoLaberinto.ABAJO;
else if (lab.ocupadoDireccion(posAuxRobot.fila,posAuxRobot.columna,JuegoLaberinto.DERECHA))
comando = JuegoLaberinto.DERECHA;
else if (lab.ocupadoDireccion(posAuxRobot.fila,posAuxRobot.columna, JuegoLaberinto.IZQUIERDA))
comando = JuegoLaberinto.IZQUIERDA;
posAuxRobot.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;

}
}

public boolean finJuego() {
return estado.finJuego;
}

}

Que lo que hago es, despues de que mueva el jugador, cojo la posición del robot, y compruebo si las posiciones de arriba, abajo, derecha e izq. estan libres y cuando una de esas posiciones esten libres pues llamo al método mueve para mover al robot, pero siempre me lo dibuja en el mismo sitio,
por favor necesito una orientación para haber si me quito de encima ya el laberinto ya que todos los dias le pego un repaso y no doy con el. gracias.
[Jul 26, 2004 8:00:49 PM] Print Post Reportar mensaje ofensivo  Ir al inicio 
Masculino domingo
Miembro



Ingresó: Feb 1, 2004
Mensajes: 57
Estado: En línea

Adjuntar archivo   Editar este mensaje   Re: Problemas con el laberinto Responder a este mensaje
Responder citando
[Eliminar este mensaje]

Bueno,
te comento un par de cosas que, a bote pronto, veo que están mal en el código.

En primer lugar, dices que compruebas si la celdilla está libre, pero el código que escribes es:

if (lab.ocupadoDireccion (posAuxRobot.fila,posAuxRobot.columna,JuegoLaberinto.ARRIBA))
comando = JuegoLaberinto.ARRIBA;

parece que haces al revés y que escoges el comando ARRIBA cuando la celdilla está ocupada.

En segundo lugar, para mover el robot haces

posAuxRobot.mueve(comando);

y eso no es correcto, ya que posAuxRobot no es el objeto que contiene el robot. El objeto que debes mover es posEnemigo.

Espero que ahora ya no te cueste terminarlo.

Un saludo,
Domingo.
[Jul 27, 2004 12:06:19 AM] Print Post    domingo@dccia.ua.es Reportar mensaje ofensivo  Ir al inicio 
Femenino vcc1
Extranjero



Ingresó: Jul 1, 2004
Mensajes: 11
Estado: Desconectados

Adjuntar archivo   Editar este mensaje   Re: Problemas con el laberinto Responder a este mensaje
Responder citando
[Eliminar este mensaje]

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.
[Jul 27, 2004 8:36:12 PM] Print Post Reportar mensaje ofensivo  Ir al inicio 
[Versión imprimible] [Publicar nuevo tema]