Ejemplo n.º 1
0
        public void Cantar(string idAtributo, string codigoCarta)
        {
            var partidaActual = juego.BuscarPartida(this.Context.ConnectionId);

            var jugadorQueCantaAtributo = partidaActual.Jugadores.Where(jugador => jugador.ConectionId == Context.ConnectionId).Single();

            var jugadorQueContesta = partidaActual.Jugadores.Where(jugador => jugador.ConectionId != Context.ConnectionId).Single();

            //Normal vs Normal
            if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Normal && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Normal)
            {
                //Si gana el que canta
                if (jugadorQueCantaAtributo.Cartas[0].BuscarValorAtributo(idAtributo) >= jugadorQueContesta.Cartas[0].BuscarValorAtributo(idAtributo))
                {
                    jugadorQueCantaAtributo.GanarCarta(jugadorQueContesta.PerderCarta());

                    //Si el jugador que contesta pierde la partida.
                    if (jugadorQueContesta.EsPerdedor() == true)
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).perder();
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).ganar();
                    }
                    //Si el jugador que contesta pierde la mano.
                    else
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).perderMano(Resultado.Normal, false);
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).ganarMano(Resultado.Normal, false);
                    }
                }
                else//pierde el que canta
                {
                    jugadorQueContesta.GanarCarta(jugadorQueCantaAtributo.PerderCarta());
                    //Si el jugador que canta pierde la partida.
                    if (jugadorQueCantaAtributo.EsPerdedor() == true)
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).ganar();
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).perder();
                    }
                    //Si el jugador que canta pierde la mano.
                    else
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).ganarMano(Resultado.Normal, false);
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).perderMano(Resultado.Normal, false);
                    }
                }
            }
            //Normal vs Amarillo
            else if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Normal && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Amarillo)
            {
                jugadorQueContesta.GanarCarta(jugadorQueCantaAtributo.PerderCarta());

                //Si el jugador que canta pierde la partida.
                if (jugadorQueCantaAtributo.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).ganar();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).perder();
                }
                //Si el jugador que canta pierde la mano.
                else
                {
                    Clients.Client(jugadorQueContesta.ConectionId).ganarMano(Resultado.Amarilla, false);
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).perderMano(Resultado.Amarilla, false);
                }
                jugadorQueContesta.Cartas.RemoveAt(0);
            }
            //Amarilla vs Normal
            else if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Amarillo && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Normal)
            {
                jugadorQueCantaAtributo.GanarCarta(jugadorQueContesta.PerderCarta());

                //Si el jugador que contesta pierde la partida.
                if (jugadorQueContesta.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).perder();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).ganar();
                }
                //Si el jugador que contesta pierde la mano.
                else
                {
                    Clients.Client(jugadorQueContesta.ConectionId).perderMano(Resultado.Amarilla, false);
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).ganarMano(Resultado.Amarilla, false);
                }
                jugadorQueCantaAtributo.Cartas.RemoveAt(0);
            }
            //Normal vs Roja
            else if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Normal && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Rojo)
            {
                jugadorQueContesta.GanarCarta(jugadorQueCantaAtributo.PerderCarta());

                //Si el jugador que canta pierde la partida.
                if (jugadorQueCantaAtributo.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).ganar();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).perder();
                }
                //Si el jugador que canta pierde la mano.
                else
                {
                    jugadorQueContesta.GanarCarta(jugadorQueCantaAtributo.PerderCarta());
                    //Si el jugador que canta pierde la partida.
                    if (jugadorQueCantaAtributo.EsPerdedor() == true)
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).ganar();
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).perder();
                    }
                    else
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).ganarMano(Resultado.Roja, false);
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).perderMano(Resultado.Roja, false);
                    }
                }
                jugadorQueContesta.Cartas.RemoveAt(0);
            }
            //Rojo vs Normal
            else if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Rojo && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Normal)
            {
                jugadorQueCantaAtributo.GanarCarta(jugadorQueContesta.PerderCarta());

                //Si el jugador que contesta pierde la partida.
                if (jugadorQueContesta.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).perder();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).ganar();
                }
                //Si el jugador que contesta pierde la mano.
                else
                {
                    jugadorQueCantaAtributo.GanarCarta(jugadorQueContesta.PerderCarta());
                    //Si el jugador que contesta pierde la partida.
                    if (jugadorQueContesta.EsPerdedor() == true)
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).perder();
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).ganar();
                    }
                    else
                    {
                        Clients.Client(jugadorQueContesta.ConectionId).perderMano(Resultado.Roja, false);
                        Clients.Client(jugadorQueCantaAtributo.ConectionId).ganarMano(Resultado.Roja, false);
                    }
                }
                jugadorQueCantaAtributo.Cartas.RemoveAt(0);
            }
            //Roja vs Amarillo
            else if (jugadorQueCantaAtributo.Cartas[0].Tipo == TipoCarta.Rojo && jugadorQueContesta.Cartas[0].Tipo == TipoCarta.Amarillo)
            {
                jugadorQueCantaAtributo.GanarCarta(jugadorQueContesta.PerderCarta());

                //Si el jugador que contesta pierde la partida.
                if (jugadorQueContesta.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).perder();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).ganar();
                }
                //Si el jugador que contesta pierde la mano.
                else
                {
                    Clients.Client(jugadorQueContesta.ConectionId).perderMano(Resultado.AmarillaRoja, false);
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).ganarMano(Resultado.AmarillaRoja, false);
                }
                jugadorQueCantaAtributo.Cartas.Remove(jugadorQueCantaAtributo.Cartas[0]);
                jugadorQueContesta.Cartas.RemoveAt(0);
            }
            //Amarillo vs Rojo
            else
            {
                jugadorQueContesta.GanarCarta(jugadorQueCantaAtributo.PerderCarta());

                //Si el jugador que canta pierde la partida.
                if (jugadorQueCantaAtributo.EsPerdedor() == true)
                {
                    Clients.Client(jugadorQueContesta.ConectionId).ganar();
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).perder();
                }
                //Si el jugador que canta pierde la mano.
                else
                {
                    Clients.Client(jugadorQueContesta.ConectionId).ganarMano(Resultado.AmarillaRoja, false);
                    Clients.Client(jugadorQueCantaAtributo.ConectionId).perderMano(Resultado.AmarillaRoja, false);
                }
                jugadorQueContesta.Cartas.RemoveAt(0);
                jugadorQueCantaAtributo.Cartas.RemoveAt(0);
            }
        }