예제 #1
0
 // 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;
 }
예제 #2
0
  @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());
  }
예제 #3
0
 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);
 }
예제 #4
0
 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);
 }
예제 #5
0
 @Override
 public void realizarEn(Juego juego) {
   List<Decision> decisiones = Arrays.asList(new QuererEnvido(), new NoQuererEnvido());
   juego.avanzarEnvidoPor(this.calcularValorFaltaEnvido(juego), decisiones);
 }