/// <summary> /// Llamada para indicar quien gana el punto en juego /// </summary> /// <param name="jugador">Jugador que gana</param> public void GanaPunto(JugadorEnum jugador) { //Check partido en juego if (Estado != Estado.EnJuego) { throw new InvalidOperationException("El partido no esta activo"); } //Check que hay en juego punto actual if (PuntoActual == null) { throw new InvalidOperationException("No hay punto en juego, debe llamar a comienza Punto"); } //Asignamos ganadores y perdores PuntoActual.JugadorGana = jugador; PuntoActual.JugadorPierde = (PuntoActual.JugadorGana == JugadorEnum.Player1 ? JugadorEnum.Player2 : JugadorEnum.Player1); JuegoActual.Ganar(PuntoActual); }
static void Run(IPartidoTenis partido) { //Solicitar datos user #region Inicialización Solicitar datos - Consola /* * partido.AddJugador(new Jugador("Nadal")); * partido.AddJugador(new Jugador("Djokovic")); * partido.NumerodeSets = PartidoSets.Partido5Sets;*/ partido.AddJugador(new Jugador(SolicitarString("Nombre jugador 1: "))); partido.AddJugador(new Jugador(SolicitarString("Nombre jugador 2: "))); partido.NumerodeSets = (PartidoSets)SolicitarSets("Partido a 3 ó 5 sets? "); #endregion //Registrar Callbacks - Para mostrar por pantalla desde eventos #region Callbacks #region Comienza ///Callback inicio partido partido.ComienzaPartidoCallback( (partidoarranca) => { Jugador saca = partidoarranca.Jugadores.First(j => j.Id == partidoarranca.JugadorSaca); Write(string.Format("{0} iniciará el partido sacando.\r\n", saca.Nombre)); }); ///Callback inicio juego partido.ComienzaJuegoCallback( (juego) => { Write(string.Format("\r\n** Juego {0} - Set {1}", juego.Set.Juegos.Count, juego.Set.Partido.Sets.Count)); }); #endregion #region Gana //Ej-**Juego 1 - Set 1 partido.GanaPuntoCallback(punto => { if (punto.PuntuacionTenisJugador1 != PuntuacionJuego.Ganado && punto.PuntuacionTenisJugador2 != PuntuacionJuego.Ganado) { Write(punto.ToString(), ((Partido)partido).ToResultString()); } }); //Callback inicio Juego //**Pepo gana el juego partido.GanaJuegoCallback(juego => { if (juego.Set.Estado == Estado.EnJuego) { Write(juego.ToString(), ((Partido)partido).ToResultString()); } }); //Callback gana set //Supu gana el juego y el set partido.GanaSetCallback(set => { if (partido.Estado == Estado.EnJuego) { Write(set.ToString(), ((Partido)partido).ToResultString()); } }); //Callback gana el partido //!!PEPO GANA EL PARTIDO¡¡ (6-2, 6-7, 6-4) partido.GanaPartidoCallback(partidofin => { Write(partidofin.ToString(), ((Partido)partido).ToResultString()); }); #endregion #endregion //Seleccionamos el jugador que hara el Saque partido.JugadorSaca = partido.GetJugadorRandom(); //Comienza el partido!! partido.ComienzaPartido(); //Mientras el partido esta en juego //Vamos jugando nuevos puntos while (partido.Estado == Estado.EnJuego) { //Comienza punto partido.ComienzaPunto(); //Obtenemos el jugador que va a ganar JugadorEnum jugadorGanador = partido.GetJugadorRandom(); //Gana el punto el jugador que seleccionamos partido.GanaPunto(jugadorGanador); } //Parada para lectura de datos System.Console.Read(); }