Ejemplo n.º 1
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.º 2
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);
        }