Ejemplo n.º 1
0
        private bool validarTruco(Jogador jogador, Truco pedido)
        {
            //Validando o truco
            if (jogadores.Where(x => Equipe.BuscaID(x.IDEquipe).PontosEquipe >= 12).Count() > 0)
            {
                log.logar($"Jogador {jogador} trucou na mão de doze. Perdeu");
                correu = jogador.IDEquipe;
                return(false);
            }

            if (jogador.IDEquipe == EquipeTrucante)
            {
                log.logar($"Jogador {jogador} trucou, mas equipe já está trucando");
                return(false);
            }

            if (this.pontos >= pedido.pontosTruco())
            {
                log.logar($"Jogador {jogador} pediu {pedido}, mas a partida já está valendo mais");
                return(false);
            }

            if (Truco.jogo.pontosTruco() == this.pontos)
            {
                log.logar("Partida já está valendo jogo");
                return(false);
            }
            return(true);
        }
Ejemplo n.º 2
0
 private int valorJogoTruco(Truco valor)
 {
     if (valor == Truco.truco)
     {
         return(3);
     }
     if (valor == Truco.seis)
     {
         return(6);
     }
     if (valor == Truco.nove)
     {
         return(9);
     }
     if (valor == Truco.doze)
     {
         return(12);
     }
     if (valor == Truco.jogo)
     {
         return(15);
     }
     else
     {
         return(0);
     }
 }
Ejemplo n.º 3
0
        private Tuple <Jogador, Escolha> aceita(Jogador jogador, Truco pedido)
        {
            List <Tuple <Jogador, Escolha> > aceite = new List <Tuple <Jogador, Escolha> >();

            foreach (var item in jogadores)
            {
                if (item != jogador)
                {
                    aceite.Add(new Tuple <Jogador, Escolha>(item, item.trucado(jogador, pedido, Manilha)));
                }
            }
            var equip = aceite.Where(x => x.Item1.IDEquipe != jogador.IDEquipe).ToList();

            if (equip.Select(x => x.Item2).Contains(Escolha.aumentar))
            {
                return(equip.Where(x => x.Item2 == Escolha.aumentar).First());
            }
            else if (equip.Select(x => x.Item2).Contains(Escolha.aceitar))
            {
                return(equip.Where(x => x.Item2 == Escolha.aceitar).First());
            }
            else
            {
                return(equip.Where(x => x.Item2 == Escolha.correr).First());
            }
        }
Ejemplo n.º 4
0
        protected virtual void OlharTruco(Jogador jogador, Truco pedido)
        {
            if (!validarTruco(jogador, pedido))
            {
                return;
            }
            log.logar($"{jogador} pedindo {pedido}");
            //Perguntando jogadores se aceitam
            Tuple <Jogador, Escolha> aceite = aceita(jogador, pedido);

            Truco pedidoAtual = pedido;

            switch (aceite.Item2)
            {
            case Escolha.correr:
                log.logar($"Equipe {Equipe.BuscaID(aceite.Item1.IDEquipe)} correu");
                correu = aceite.Item1.IDEquipe;
                break;

            case Escolha.aceitar:
                this.pontos    = pedido.pontosTruco();
                EquipeTrucante = jogador.IDEquipe;
                log.logar($"{aceite.Item1} aceitou o truco");
                break;

            case Escolha.aumentar:
                #region aumentar
                while (true)
                {
                    this.pontos = pedidoAtual.pontosTruco();
                    pedidoAtual = pedidoAtual.proximo();
                    aceite      = aceita(aceite.Item1, pedidoAtual);
                    switch (aceite.Item2)
                    {
                    case Escolha.correr:
                        correu = aceite.Item1.IDEquipe;
                        return;

                    case Escolha.aceitar:
                        this.pontos    = pedidoAtual.pontosTruco();
                        EquipeTrucante = jogador.IDEquipe;
                        return;

                    case Escolha.aumentar:
                        if (pedidoAtual == Truco.jogo)
                        {
                            this.pontos    = 15;
                            EquipeTrucante = aceite.Item1.IDEquipe;
                            return;
                        }
                        break;
                    }
                }

                #endregion
            default:
                break;
            }
        }
Ejemplo n.º 5
0
        public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha)
        {
            Escolha escolhi = Escolha.correr;

            for (int i = 0; i < _mao.Count; i++)
            {
                if (_mao[i].valor(manilha) == 14)
                {
                    return(Escolha.aumentar);
                }
                else if (_mao[i].valor(manilha) >= 11)
                {
                    escolhi = Escolha.aceitar;
                }
            }
            return(escolhi);
        }
Ejemplo n.º 6
0
 public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha)
 {
     for (int i = 0; i < _mao.Count; i++)
     {
         if (_mao[i].valor(manilha) >= 13)
         {
             log.logar("Seissss seu bosta!", TipoLog.logJogador);
             return(Escolha.aumentar);
         }
         else
         {
             if (_mao[i].valor(manilha) > 10)
             {
                 return(Escolha.aceitar);
             }
         }
     }
     return(Escolha.correr);
 }
Ejemplo n.º 7
0
 public Player(string n, Truco t, BotConnection b, InterfazPlayer i)
 {
     nombre = n;
     _truco = t;
     _bot   = b;
     if (_bot != null)
     {
         _bot.setPlayer(this);
     }
     _interfaz = i;
     if (_interfaz != null)
     {
         _interfaz.asignarNombre(n);
     }
     _cartas          = new List <Carta>();
     _cartasEnMesa    = new List <Carta>();
     _puntaje         = 0;
     _partidasGanadas = 0;
 }
Ejemplo n.º 8
0
        public static Truco proximo(this Truco pedido)
        {
            switch (pedido)
            {
            case Truco.truco:
                return(Truco.seis);

            case Truco.seis:
                return(Truco.nove);

            case Truco.nove:
                return(Truco.doze);

            case Truco.doze:
                return(Truco.jogo);

            default:
                return(Truco.truco);
            }
        }
Ejemplo n.º 9
0
        public static int pontosTruco(this Truco pedido)
        {
            switch (pedido)
            {
            case Truco.truco:
                return(3);

            case Truco.seis:
                return(6);

            case Truco.nove:
                return(9);

            case Truco.doze:
                return(12);

            case Truco.jogo:
                return(15);

            default:
                return(1);
            }
        }
Ejemplo n.º 10
0
    // Cuando los dos bots están conectados comienzo el juego instanciando un Truco.
    private IEnumerator _empezarJuego()
    {
        Truco truco = new Truco(_nombrePlayer1, _bot1, interfazPlayer1, _nombrePlayer2, _bot2, interfazPlayer2, _partidas, resultado);

        yield break;
    }
Ejemplo n.º 11
0
        public override Escolha trucado(Jogador trucante, Truco pedido, Carta manilha)
        {
            if (trucante.IDEquipe == IDEquipe)
            {
                equipeTrucante = IDEquipe;
                trucoAtual     = pedido;
                return(Escolha.aceitar);
            }
            else
            {
                switch (pedido)
                {
                case Truco.truco:
                    if (90 > probabilidadeVitoria(manilha) && probabilidadeVitoria(manilha) > 50)
                    {
                        return(Escolha.aceitar);
                    }
                    else if (probabilidadeVitoria(manilha) >= 80)
                    {
                        return(Escolha.aumentar);
                    }
                    else
                    {
                        return(Escolha.correr);
                    }

                case Truco.seis:
                    if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 9 && probabilidadeVitoria(manilha) > 75) ||
                        (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75))
                    {
                        return(Escolha.aceitar);
                    }
                    else if (probabilidadeVitoria(manilha) >= 90)
                    {
                        return(Escolha.aumentar);
                    }
                    else
                    {
                        return(Escolha.correr);
                    }

                case Truco.nove:
                    if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 6 && probabilidadeVitoria(manilha) > 75) ||
                        (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75))
                    {
                        return(Escolha.aceitar);
                    }
                    else if (probabilidadeVitoria(manilha) >= 90)
                    {
                        return(Escolha.aumentar);
                    }
                    else
                    {
                        return(Escolha.correr);
                    }

                case Truco.doze:
                    if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 3 && probabilidadeVitoria(manilha) > 75) ||
                        (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75))
                    {
                        return(Escolha.aceitar);
                    }
                    else if (probabilidadeVitoria(manilha) >= 90)
                    {
                        return(Escolha.aumentar);
                    }
                    else
                    {
                        return(Escolha.correr);
                    }

                case Truco.jogo:
                    if (probabilidadeVitoria(manilha) > 80)
                    {
                        return(Escolha.aceitar);
                    }
                    else
                    {
                        return(Escolha.correr);
                    }

                default:
                    return(Escolha.aceitar);
                }
            }
        }
Ejemplo n.º 12
0
        public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha)
        {
            int ptsMinhaEqp = Equipe.BuscaID(this.IDEquipe).PontosEquipe;
            int ptsEqpAdv   = Equipe.BuscaID(trucante.IDEquipe).PontosEquipe;
            int x           = ManilhasNaMao(manilha);

            if ((ptsEqpAdv > ptsMinhaEqp && ptsEqpAdv + valorJogoTruco(valor) < 15) && ptsMinhaEqp - ptsEqpAdv > valorJogoTruco(valor))
            {
                if (cartasUsadas.Count < 4 && x > 0)
                {
                    return(Escolha.aceitar);
                }

                if (cartasUsadas.Count < 4 && _mao[0].valor(manilha) > 8)
                {
                    return(Escolha.aceitar);
                }

                if (ganhoPrimeira && x > 0)
                {
                    return(Escolha.aumentar);
                }

                if (ganhoPrimeira && (cartasUsadas.Count > 3 || cartasUsadas.Count < 8) && (_mao[0].valor(manilha) > 8 || _mao[1].valor(manilha) > 8))
                {
                    return(Escolha.aceitar);
                }

                if ((cartasUsadas.Count > 3 || cartasUsadas.Count < 8) && (_mao[0].valor(manilha) > 10))
                {
                    return(Escolha.aceitar);
                }


                if (ganhoPrimeira && (_mao[0].valor(manilha) > 7))
                {
                    return(Escolha.aceitar);
                }
            }
            return(Escolha.correr);

            //if (x >= 2)
            //    return Escolha.aumentar;
            //if (x == 1)
            //    return Escolha.aceitar;
            //if (ptsEqpAdv > 9 && ptsMinhaEqp < 5)
            //    return Escolha.aumentar;
            //if (_mao.Count == 3)
            //{
            //    if (_mao[0].valor(manilha) > 7)
            //        return Escolha.aceitar;
            //}
            //if (_mao.Count == 2)
            //{
            //    if (_mao[0].valor(manilha) > 7)
            //        return Escolha.aceitar;
            //}

            //if (_mao.Count == 0 && cartasUsadas.Last().valor(manilha) > 8)
            //    return Escolha.aceitar;

            //if (_mao.Count == 1 &&_mao[0].valor(manilha) <= 3)
            //    return Escolha.correr;
            //else
            //    return Escolha.aceitar;
        }
Ejemplo n.º 13
0
 protected void trucar(Jogador jogador, Truco pedido)
 {
     truco(jogador, pedido);
 }
Ejemplo n.º 14
0
 public virtual Escolha trucado(Jogador trucante, Truco valor, Carta manilha)
 {
     return(Escolha.aceitar);
 }