/// <summary> /// Sirve para actualizar el marcador despues de un punto, pasando la puntuacion actual por ref. /// </summary> /// <param name="puntosGana">Puntos que lleva el que gana el punto</param> /// <param name="puntosPierde">Puntos que lleva el que pierde el punto</param> private void ActualizaMarcador(ref PuntuacionJuego puntosGana, ref PuntuacionJuego puntosPierde) { //Si va por debajo de 40 if (puntosGana <= PuntuacionJuego.Treinta) { puntosGana++; } // -->va en 40 y el otro tiene 30 o menos else if ((puntosGana == PuntuacionJuego.Cuarenta && puntosPierde <= PuntuacionJuego.Treinta) // -->va con Ventaja || (puntosGana == PuntuacionJuego.Ventaja)) { puntosGana = PuntuacionJuego.Ganado; } //Si van 40 - 40 se pone a ventaja else if ((puntosGana == PuntuacionJuego.Cuarenta && puntosPierde == PuntuacionJuego.Cuarenta)) { puntosGana = PuntuacionJuego.Ventaja; } // Si va el otro jugador con VEntaja se pone el marcador 40 a 40 else if (puntosPierde == PuntuacionJuego.Ventaja) { puntosPierde = PuntuacionJuego.Cuarenta; } }
/// <summary> /// Invocado cuando el punto lo gana un jugador /// </summary> public void Gana() { if (Partido == null) { throw new InvalidOperationException("No hay partido asignado al punto"); } if (JugadorGana == JugadorPierde) { throw new InvalidOperationException("No se han asignado correctamente el ganador y perdedor del turno"); } //Actualizo puntuacion al Jugador ganador PuntuacionJuego puntos1 = PuntuacionTenisJugador1; PuntuacionJuego puntos2 = PuntuacionTenisJugador2; if (JugadorGana == JugadorEnum.Player1) { ActualizaMarcador(ref puntos1, ref puntos2); } else { ActualizaMarcador(ref puntos2, ref puntos1); } PuntosJugador1 = (int)puntos1; PuntosJugador2 = (int)puntos2; OnGana(ganaCallback); //Se sobreescribe porque en Punto se llama 'manualmente al evento desde metodo Gana(); //Y despues en el Juego se le vuelve a pasar el punto Estado = Estado.EnJuego; }
/// <summary> /// DEtermina si serializa correctamente la enumeracion /// </summary> public void CheckSerializacionEnum() { PuntuacionJuego puntuacion = PuntuacionJuego.Ganado; Assert.AreEqual(puntuacion.ToDescription(), "Win"); }