diaznicolasandres1 / 95.02-algo3-algo-empire-tp-final

Proyecto final algoritmos y programacion III - POO/Patrones de diseño/MVC/TDD
1 stars 0 forks source link

Clase Juego #13

Closed tomasBustamante closed 5 years ago

tomasBustamante commented 5 years ago

En el commit 5ded400 se creó la clase Juego pero no se incluyeron sus pruebas unitarias reduciendo así la cobertura un 4,79%. Es necesario crear la prueba primero para poder definir el contrato de la clase.

No es necesario tener referencias a ambos jugadores. Se puede tener únicamente un atributo del jugador actual, el cual tenga una referencia al otro y se vayan alternando en cada cambio de turno. De esta forma, el siguiente código:

    public void cambiarTurno() {
        this.jugador.avanzarTurno();
        Jugador aux = this.jugador;
        this.jugador = this.oponente;
        this.oponente = aux;
    }

se podría simplificar de la siguiente manera, delegando la responsabilidad al jugador:

    public void cambiarTurno() {
        this.jugadorActual = this.jugadorActual.cambiarTurno();
    }

Además, haría falta otorgarle algún atributo al jugador para que se pueda distinguir uno de otro (como por ejemplo el nombre que será ingresado por el usuario al comienzo del juego).

Por otro lado, si la idea es que la clase Juego sea una especie de fachada, los ataques deberían modelarse de manera distinta (más allá de lo mencionado en el issue #12). Habría que pensar de qué manera interactuaría el usuario con el juego a la hora de decidir la acción. Si selecciona casilleros entonces no debería pasar los colocables por parámetro sino las posiciones.

FacuMastri commented 5 years ago

Hola @tomasBustamante , con respecto a esto:

Por otro lado, si la idea es que la clase Juego sea una especie de fachada, los ataques deberían modelarse de manera distinta (más allá de lo mencionado en el issue #12). Habría que pensar de qué manera interactuaría el usuario con el juego a la hora de decidir la acción. Si selecciona casilleros entonces no debería pasar los colocables por parámetro sino las posiciones.

Sería viable, para no modificar como se modeló los ataques, que una vez que el usuario selecciona un Casillero se mostrara cuales son las acciones posibles para ese Colocable ubicado en ese Casillero? Es decir, internamente se 'devuelve' el Colocable y, según si es de una instancia de una clase u otra, se habilitan las opciones disponibles.

tomasBustamante commented 5 years ago

Depende, habría que ver por lo menos una prueba de esa estrategia para entender el contrato de lo que planteás y ver luego cómo es que se determinan las acciones posibles en función del tipo de colocable.