// Si el rival está en las malas: lo necesario para llegar a buenas; // si el rival está en las buenas: los necesarios para que el jugador con mayor puntaje gane el // partido private int calcularValorFaltaEnvido(Juego juego) { int puntajeRival = juego.obtenerEquipoContrarioA(juego.obtenerJugadorConDecision()).obtenerPuntajeTotal(); int puntajeADar = 0; if (puntajeRival < 15) { puntajeADar = 15 - puntajeRival; } else { int maximoPuntaje = Math.max( puntajeRival, juego.obtenerJugadorConDecision().getEquipo().obtenerPuntajeTotal()); puntajeADar = 30 - maximoPuntaje; } // la diferencia de los puntos ya acumulados. puntajeADar -= juego.obtenerPuntosPorEnvido() + juego.obtenerPuntosFuturosPorEnvido(); return puntajeADar; }
@Test public void testIntegracionPartidaUnoVsUnoSinFlor() { elJuego = new Juego.Builder() .conRepartidor(repartidor) .agregarEquipo(new Equipo(jEquipoUno)) .agregarEquipo(new Equipo(jEquipoDos)) .iniciar(); int puntajeEsperadoEquipoUno = 0; int puntajeEsperadoEquipoDos = 0; for (int i = 0; i < 2; i++) { puntajeEsperadoEquipoUno += 7; puntajeEsperadoEquipoDos += 2; Assert.assertEquals(jEquipoUno, elJuego.obtenerJugadorQueInicioRonda()); ejecutarPrimeraRondaUnoVsUnoSinFlor(); Assert.assertEquals(puntajeEsperadoEquipoUno, jEquipoUno.getEquipo().obtenerPuntajeTotal()); Assert.assertEquals(puntajeEsperadoEquipoDos, jEquipoDos.getEquipo().obtenerPuntajeTotal()); puntajeEsperadoEquipoUno += 7; puntajeEsperadoEquipoDos += 2; Assert.assertEquals(jEquipoDos, elJuego.obtenerJugadorQueInicioRonda()); ejecutarSegundaRondaUnoVsUnoSinFlor(); Assert.assertEquals(puntajeEsperadoEquipoUno, jEquipoUno.getEquipo().obtenerPuntajeTotal()); Assert.assertEquals(puntajeEsperadoEquipoDos, jEquipoDos.getEquipo().obtenerPuntajeTotal()); } Assert.assertEquals(28, jEquipoUno.getEquipo().obtenerPuntajeTotal()); Assert.assertEquals(8, jEquipoDos.getEquipo().obtenerPuntajeTotal()); Assert.assertEquals(jEquipoUno, elJuego.obtenerJugadorQueInicioRonda()); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.FALTA_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.QUIERO_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.SON_BUENAS); Assert.assertEquals(30, jEquipoUno.getEquipo().obtenerPuntajeTotal()); Assert.assertTrue(elJuego.estaLaPartidaFinalizada()); }
private void ejecutarSegundaRondaUnoVsUnoSinFlor() { elJuego.obtenerJugadorConDecision().tomarDecision(Decision.ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.ENVIDO_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.REAL_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.FALTA_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.NO_QUIERO_ENVIDO); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeBasto(3)); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeOro(3)); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.TRUCO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.QUIERO_TRUCO); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeBasto(1)); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.IRSE_AL_MAZO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.CONTINUAR); }
private void ejecutarPrimeraRondaUnoVsUnoSinFlor() { elJuego.obtenerJugadorConDecision().tomarDecision(Decision.ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.ENVIDO_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.REAL_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.QUIERO_ENVIDO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.SON_BUENAS); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeEspada(7)); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeBasto(1)); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeBasto(7)); elJuego.obtenerJugadorConTurno().jugarCarta(new CartaDeOro(3)); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.TRUCO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.RETRUCO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.NO_QUIERO_TRUCO); elJuego.obtenerJugadorConDecision().tomarDecision(Decision.CONTINUAR); }
@Override public void realizarEn(Juego juego) { List<Decision> decisiones = Arrays.asList(new QuererEnvido(), new NoQuererEnvido()); juego.avanzarEnvidoPor(this.calcularValorFaltaEnvido(juego), decisiones); }