Beispiel #1
0
        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);
        }
Beispiel #2
0
        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
        }