public Carta quartoJogar(List <Carta> cartasMesa, Carta manilha) { Carta carta = _mao[0]; if (TrucoAuxiliar.gerarValorCarta(cartasMesa[1], manilha) > TrucoAuxiliar.gerarValorCarta(cartasMesa[0], manilha) && TrucoAuxiliar.gerarValorCarta(cartasMesa[1], manilha) > TrucoAuxiliar.gerarValorCarta(cartasMesa[2], manilha)) { carta = _mao[0]; _mao.RemoveAt(0); } else { Carta maior = null; if (TrucoAuxiliar.gerarValorCarta(cartasMesa[0], manilha) > TrucoAuxiliar.gerarValorCarta(cartasMesa[2], manilha)) { maior = cartasMesa[0]; } else { maior = cartasMesa[2]; } for (int i = 0; i < _mao.Count; i++) { if (TrucoAuxiliar.compara(_mao[i], maior, manilha) > 0) { carta = _mao[i]; _mao.RemoveAt(i); break; } } } return(carta); }
public override void novaCarta(Carta carta, Jogador jogador, Carta manilha) { if (Equipe.BuscaID(IDEquipe).PontosEquipe < 12) { for (int i = 0; i < _mao.Count; i++) { if (jogador.IDEquipe != IDEquipe && TrucoAuxiliar.comparar(_mao[i], carta, manilha) > 0) { if (_mao[i].valor(manilha) > 10) { trucar(this, Truco.truco); } } } } if (jogador.IDEquipe != IDEquipe && ((Carta)carta).valor(manilha) < 2 && _mao.Count > 0 && _mao.Max(a => a.valor(manilha)) > 10) { trucar(this, Truco.truco); } }
public Carta segundoJogar(List <Carta> cartasMesa, Carta manilha) { Carta carta = _mao[0]; for (int i = 0; i < _mao.Count; i++) { if (TrucoAuxiliar.compara(_mao[i], cartasMesa[0], manilha) > 0) { carta = _mao[i]; _mao.RemoveAt(i); break; } } return(carta); }
public override void novaCarta(Carta carta, Jogador jogador, Carta manilha) { if (cartasJogadas.Count == 4 || cartasJogadas.Count == 0) { cartasJogadas = new List <Carta>(); } cartasJogadas.Add(carta); if (_mao.Count == 2 && (TrucoAuxiliar.gerarValorCarta(_mao[0], manilha) >= 11 || TrucoAuxiliar.gerarValorCarta(_mao[1], manilha) >= 11)) { trucar(this, Truco.truco); } else if (_mao.Count == 1 && TrucoAuxiliar.gerarValorCarta(_mao[0], manilha) >= 11) { trucar(this, Truco.truco); } }
public virtual Carta Jogar(List <Carta> cartasRodada, Carta manilha) { // encontra maior da mesa if (_mao.Count == 3) { ordenar(manilha); } Carta maiorMesa = cartasRodada.LastOrDefault(); for (int i = 0; i < cartasRodada.Count - 1; i++) { if (TrucoAuxiliar.comparar(cartasRodada[i], maiorMesa, manilha) > 0) { maiorMesa = cartasRodada[i]; } } //descarta Carta carta = _mao[0]; if (maiorMesa == null) { _mao.RemoveAt(0); return(carta); } else { for (int i = 0; i < _mao.Count; i++) { carta = _mao[i]; if (TrucoAuxiliar.comparar(carta, maiorMesa, manilha) > 0) { _mao.RemoveAt(i); return(carta); } } carta = _mao[0]; _mao.RemoveAt(0); return(carta); } }
public Carta terceiroJogar(List <Carta> cartasMesa, Carta manilha) { Carta carta = _mao[0]; if (TrucoAuxiliar.gerarValorCarta(cartasMesa[0], manilha) > TrucoAuxiliar.gerarValorCarta(cartasMesa[1], manilha)) { carta = _mao[0]; _mao.RemoveAt(0); } else { for (int i = 0; i < _mao.Count; i++) { if (TrucoAuxiliar.compara(_mao[i], cartasMesa[1], manilha) > 0) { carta = _mao[i]; _mao.RemoveAt(i); break; } } } return(carta); }
public override Carta Jogar(List <Carta> cartasRodada, Carta manilha) { // encontra maior da mesa if (_mao.Count == 3) { ordenar(manilha); } Carta maiorMesa = cartasRodada.LastOrDefault(); for (int i = 0; i < cartasRodada.Count - 1; i++) { if (TrucoAuxiliar.comparar(cartasRodada[i], maiorMesa, manilha) > 0) { maiorMesa = cartasRodada[i]; } } //descarta Carta carta = _mao.LastOrDefault(); if (cartasRodada.Count == 0) { _mao.Remove(carta); return(carta); } if (cartasRodada.Count == 1) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } if (cartasRodada.Count == 2) { if (TrucoAuxiliar.comparar(cartasRodada[0], cartasRodada[1], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } else { for (int i = 0; i < _mao.Count; i++) { if (TrucoAuxiliar.comparar(cartasRodada[1], cartasRodada[0], manilha) > 0 && TrucoAuxiliar.comparar(_mao[i], cartasRodada[1], manilha) > 0) { carta = _mao[i]; _mao.RemoveAt(i); return(carta); } else { if (TrucoAuxiliar.comparar(cartasRodada[1], cartasRodada[0], manilha) > 0 && TrucoAuxiliar.comparar(cartasRodada[1], _mao[i], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } } } _mao.Remove(carta); return(carta); } if (cartasRodada.Count == 3) { if (TrucoAuxiliar.comparar(cartasRodada[1], cartasRodada[0], manilha) > 0 && TrucoAuxiliar.comparar(cartasRodada[1], cartasRodada[2], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } else { if (TrucoAuxiliar.comparar(cartasRodada[0], cartasRodada[1], manilha) > 0 || TrucoAuxiliar.comparar(cartasRodada[2], cartasRodada[1], manilha) > 0) { carta = _mao.Last(); return(carta); } } } _mao.Remove(carta); return(carta); }
public override Carta Jogar(List <Carta> cartasRodada, Carta manilha) { // encontra maior da mesa if (_mao.Count == 3) { ordenar(manilha); } RegraTrucar(manilha); Carta carta; switch (_mao.Count) { #region case 3 case 3: //Carta maiorMesa = cartasRodada.LastOrDefault(); if (cartasRodada.Count == 0) { if (TrucoAuxiliar.gerarValorCarta(_mao[1], manilha) > 7) { carta = _mao[1]; _mao.RemoveAt(1); return(carta); } else { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } if (cartasRodada.Count == 1) { if (TrucoAuxiliar.compara(_mao[1], cartasRodada[0], manilha) > 0) { carta = _mao[1]; _mao.RemoveAt(1); return(carta); } else { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } if (cartasRodada.Count == 2) { if (TrucoAuxiliar.compara(cartasRodada[0], cartasRodada[1], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } else { for (int i = 0; i < _mao.Count; i++) { carta = _mao[i]; if (TrucoAuxiliar.comparar(carta, cartasRodada[1], manilha) > 0) { _mao.RemoveAt(i); return(carta); } } carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } if (cartasRodada.Count == 3) { if (TrucoAuxiliar.compara(cartasRodada[1], cartasRodada[0], manilha) > 0 && TrucoAuxiliar.compara(cartasRodada[1], cartasRodada[2], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); ganhoPrimeira = true; return(carta); } else { for (int i = 0; i < _mao.Count; i++) { carta = _mao[i]; if (TrucoAuxiliar.comparar(carta, cartasRodada[0], manilha) > 0 && TrucoAuxiliar.comparar(carta, cartasRodada[2], manilha) > 0) { _mao.RemoveAt(i); ganhoPrimeira = true; return(carta); } } carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } return(null); #endregion #region case 2 case 2: //Carta maiorMesa = cartasRodada.LastOrDefault(); if (cartasRodada.Count == 0) { ganhoPrimeira = true; carta = _mao[0]; _mao.RemoveAt(0); return(carta); } if (cartasRodada.Count == 1) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } if (cartasRodada.Count == 2) { carta = _mao[1]; _mao.RemoveAt(1); return(carta); } if (cartasRodada.Count == 3) { if (TrucoAuxiliar.compara(cartasRodada[1], cartasRodada[0], manilha) > 0 && TrucoAuxiliar.compara(cartasRodada[1], cartasRodada[2], manilha) > 0) { carta = _mao[0]; _mao.RemoveAt(0); return(carta); } else { for (int i = 0; i < _mao.Count; i++) { carta = _mao[i]; if (TrucoAuxiliar.comparar(carta, cartasRodada[0], manilha) > 0 && TrucoAuxiliar.comparar(carta, cartasRodada[2], manilha) > 0) { _mao.RemoveAt(i); return(carta); } } carta = _mao[0]; _mao.RemoveAt(0); return(carta); } } return(null); #endregion #region case 1 case 1: carta = _mao[0]; _mao.RemoveAt(0); return(carta); default: return(null); #endregion } }
public void Rodar(Jogador[] jogadoresParametro) { // Inicialização dos sinais do truco jogadores = jogadoresParametro; this.ligaEventos(); // variaveis de controle int[] eqp1 = new int[2]; int[] eqp2 = new int[2]; eqp1[0] = jogadores[0].IDEquipe; eqp2[0] = jogadores[1].IDEquipe; // Mão de doze if (Equipe.BuscaID(eqp1[0]).PontosEquipe >= 12 || Equipe.BuscaID(eqp2[0]).PontosEquipe >= 12) { pontos = 3; log.logar("Mão de 12"); log.logar(""); } int indempate = 0; //Loop das rodadas for (int i = 0; i < 3; i++) { #region loop da rodada ListaCartas = new List <Carta>(); Carta maior1 = null; Carta maior2 = null; int imaior1 = 0; int imaior2 = 0; for (int j = 0; j < 4; j++) { #region loop da mão ListaCartas.Add(jogadores[j].Jogar(ListaCartas, Manilha)); Carta X = ListaCartas.Last(); log.logar(jogadores[j].nome + " jogou {0}, peso: {1}", X.ToString(), TrucoAuxiliar.gerarValorCarta(X, Manilha)); novaCarta(X, jogadores[j], Manilha); if (jogadores[j].IDEquipe == eqp1[0] && TrucoAuxiliar.comparar(ListaCartas[j], maior1, Manilha) > 0) { maior1 = ListaCartas[j]; imaior1 = j; indempate = j; } if (jogadores[j].IDEquipe == eqp2[0] && TrucoAuxiliar.comparar(ListaCartas[j], maior2, Manilha) > 0) { maior2 = ListaCartas[j]; imaior2 = j; indempate = j; } if (correu > -1) { log.logar($"Equipe {Equipe.BuscaID(correu)} correu do truco."); Equipe vencedora = Equipe.BuscaID(jogadores.Where(x => x.IDEquipe != correu).First().IDEquipe); vencedora.GanharPontos(pontos); log.logar("A {0}, ganhou a rodada !", vencedora.ToString()); desligaEventos(); return; } #endregion } if (TrucoAuxiliar.comparar(maior1, maior2, Manilha) == 0) { if (i == 0) { eqp1[1] += 3; eqp2[1] += 3; } else { eqp1[1] += 2; eqp2[1] += 2; } log.logar("*Empate*"); jogadores = Reordenar(jogadores, indempate); } else { if (TrucoAuxiliar.comparar(maior1, maior2, Manilha) > 0) { if (i == 0) { eqp1[1] += 3; } else { eqp1[1] += 2; } log.logar("\nA equipe do jogador{0}, ganhou a mão.", jogadores[imaior1].nome); log.logar(""); jogadores = Reordenar(jogadores, imaior1); } else { if (i == 0) { eqp2[1] += 3; } else { eqp2[1] += 2; } log.logar("\nA equipe do jogador{0}, ganhou a mão.", jogadores[imaior2].nome); log.logar(""); jogadores = Reordenar(jogadores, imaior2); } } if (eqp1[1] != eqp2[1] && (eqp1[1] == 5 || eqp2[1] == 5)) { break; } #endregion } if (correu == eqp2[0]) { Equipe.BuscaID(eqp1[0]).GanharPontos(pontos); log.logar("A {0}, ganhou a rodada !", Equipe.BuscaID(eqp1[0]).ToString()); } else if (correu == eqp1[0]) { Equipe.BuscaID(eqp2[0]).GanharPontos(pontos); log.logar("A {0}, ganhou a rodada !", Equipe.BuscaID(eqp2[0]).ToString()); } else { if (eqp1[1] > eqp2[1]) { Equipe.BuscaID(eqp1[0]).GanharPontos(pontos); log.logar("A {0}, ganhou a rodada !", Equipe.BuscaID(eqp1[0]).ToString()); } else if (eqp1[1] < eqp2[1]) { Equipe.BuscaID(eqp2[0]).GanharPontos(pontos); log.logar("A {0}, ganhou a rodada !", Equipe.BuscaID(eqp2[0]).ToString()); } else { log.logar("\n*Empate na rodada, ninguem ganhou pontos*"); } } desligaEventos(); }
protected void ordenar(Carta manilha) { _mao = _mao.OrderBy(x => TrucoAuxiliar.gerarValorCarta(x, manilha)).ToList(); }