private Carta retornaMaiorCartaAdversario(List <Tuple <Jogador, Carta> > rodada, Carta manilha) { var cartasAdversario = rodada.Where(x => x.Item1.IDEquipe == this.IDEquipe).ToList(); Carta c = cartasAdversario[0].Item2; foreach (var tupla in cartasAdversario) { if (TrucoAuxiliar.gerarValorCarta(tupla.Item2, manilha) > TrucoAuxiliar.gerarValorCarta(c, manilha)) { c = tupla.Item2; } } return(c); }
public override Carta Jogar(List <Carta> cartasRodada, Carta manilha) { Carta aux; if (_mao.Count == 3) { //Magica(manilha); ordenar(manilha); } ganheiPrimeira(cartasRodada); ganheiSegunda(cartasRodada); #region UltimaCarta if (_mao.Count() == 1) { if (cartasRodada.Count > 2 && _mao[0].valor(manilha) > cartasRodada.Max(x => x.valor(manilha))) { pedirTruco(this, trucar()); return(jogaMenor()); } if (ganhaPrimeira) { if (retornaMaiorCartaIlusionista(rodada1, manilha).valor(manilha) < retornaMaiorCartaAdversario(rodada2, manilha).valor(manilha)) { pedirTruco(this, trucar()); return(jogaMenor()); } } else if (ganhaSegunda) { if (retornaMaiorCartaIlusionista(rodada2, manilha).valor(manilha) < retornaMaiorCartaAdversario(rodada1, manilha).valor(manilha)) { pedirTruco(this, trucar()); return(jogaMenor()); } } if (cartasRodada.Count > 3 && cartasRodada.Max(x => x.valor(manilha)) < 11) { pedirTruco(this, trucar()); return(jogaMenor()); } } #endregion #region PrimeiroAjogar if (cartasRodada.LastOrDefault() == null) { //Primeira Rodada trucarNaPrimeira(manilha); if (_mao.Count() == 3) { if (_mao.Where(x => x.valor(manilha) >= 13).Count() >= 2) { return(jogaMenor()); } else { return(_mao[1]); } } //Segunda Rodada if (_mao.Count() == 2) { return(jogaMenor()); } return(jogaMenor()); } #endregion #region SegundoAjogar if (cartasRodada.Count == 1) { //segundo da primeira rodada trucarNaPrimeira(manilha); if (_mao.Count == 3) { if (cartasRodada[0].valor(manilha) == 14) { pedirTruco(this, trucar()); return(jogaMenor()); } } if (cartasRodada.Max(x => TrucoAuxiliar.gerarValorCarta(x, manilha)) < 7) { log.logar("Faz ai parceiro.", TipoLog.logJogador); return(jogaMenor()); } for (int i = 0; i < _mao.Count; i++) { if (cartasRodada.Max(x => TrucoAuxiliar.gerarValorCarta(x, manilha)) < TrucoAuxiliar.gerarValorCarta(_mao[i], manilha)) { aux = _mao[i]; _mao.RemoveAt(i); return(aux); } } } #endregion #region TerceiroAjogar if (cartasRodada.Count == 2) { trucarNaPrimeira(manilha); if (cartasRodada.Max(x => TrucoAuxiliar.gerarValorCarta(x, manilha)) > TrucoAuxiliar.gerarValorCarta(_mao.Last(), manilha)) { return(jogaMenor()); } aux = _mao[0]; //aux = (Carta)_mao.Where(x=>x.Valor==_mao.Max(y=>y.Valor)&&x.Valor<11); for (int i = 0; i < _mao.Count; i++) { if (TrucoAuxiliar.gerarValorCarta(_mao[i], manilha) < 11) { aux = _mao[i]; } } _mao.Remove(aux); return(aux); } #endregion #region Pe trucarNaPrimeira(manilha); for (int i = 0; i < _mao.Count; i++) { if (cartasRodada.Max(x => TrucoAuxiliar.gerarValorCarta(x, manilha)) < TrucoAuxiliar.gerarValorCarta(_mao[i], manilha) && TrucoAuxiliar.gerarValorCarta(cartasRodada[cartasRodada.Count - 2], manilha) != cartasRodada.Max(x => TrucoAuxiliar.gerarValorCarta(x, manilha))) { aux = _mao[i]; if (_mao.Last() != aux && _mao.Last().valor(manilha) >= 10) { pedirTruco(this, trucar()); _mao.Remove(aux); return(aux); } else { _mao.Remove(aux); return(aux); } } } return(jogaMenor()); #endregion }