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); } }