Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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
            }
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
 protected void ordenar(Carta manilha)
 {
     _mao = _mao.OrderBy(x => TrucoAuxiliar.gerarValorCarta(x, manilha)).ToList();
 }