Ejemplo n.º 1
0
        internal void FinalizarRodada(List <Jogador> jogadores)
        {
            var primeiroJogadorAnalisado = true;
            var apostasDosUltimosPotes   = new Dictionary <int, int>();

            foreach (var jogador in jogadores.OrderBy(j => j.FichasApostadasNaRodada))
            {
                var fichasApostadas = jogador.FichasApostadasNaRodada;

                foreach (var apostas in apostasDosUltimosPotes)
                {
                    Potes.Where(p => p.Id == apostas.Key).First().AdicionarFichas(jogador.Id, apostas.Value);
                    fichasApostadas -= apostas.Value;
                }

                if (apostasDosUltimosPotes.Count == 0 || fichasApostadas > 0)
                {
                    Pote pote = Potes.LastOrDefault();

                    if (!primeiroJogadorAnalisado || pote == null)
                    {
                        pote?.Fechar();
                        pote = new Pote((pote?.Id ?? 0) + 1);
                        Potes.Add(pote);
                    }

                    apostasDosUltimosPotes.Add(pote.Id, fichasApostadas);
                    pote.AdicionarFichas(jogador.Id, fichasApostadas);
                }

                primeiroJogadorAnalisado = false;
                jogador.ZerarFichasApostadasNaRodada();
            }
        }
Ejemplo n.º 2
0
        public void DeveFecharPote()
        {
            var poteGerado = new Pote(1);

            Assert.True(poteGerado.Aberto);

            poteGerado.Fechar();
            Assert.False(poteGerado.Aberto);
        }
Ejemplo n.º 3
0
        public void DeveReceberFichasDoJogadorQueNaoEstaNoPote()
        {
            var idJogador       = 1;
            var fichasEsperadas = 100;
            var poteGerado      = new Pote(1);

            poteGerado.AdicionarFichas(idJogador, fichasEsperadas);

            Assert.Equal(fichasEsperadas, poteGerado.Fichas);
            Assert.Equal(fichasEsperadas, poteGerado.FichasMinimaDoPote);
            Assert.Contains(poteGerado.JogadoresNoPote, j => j == idJogador);
        }
Ejemplo n.º 4
0
        public void DeveCriarPote()
        {
            var poteEsperado = new
            {
                Id                 = 1,
                Fichas             = 0,
                FichasMinimaDoPote = 0,
                Aberto             = true
            };

            var poteGerado = new Pote(1);

            poteEsperado.ToExpectedObject().ShouldMatch(poteGerado);
        }
Ejemplo n.º 5
0
        private void Inicializar()
        {
            Potes = new Pote[parametrosCampeonato.QuantidadePotes + 1];
            for (int i = 1; i <= parametrosCampeonato.QuantidadePotes; i++)
            {
                Potes[i] = new Pote(nome: $"Pote {i}", tamanho: parametrosCampeonato.TamanhoPotes);
            }

            Grupos = new Grupo[parametrosCampeonato.QuantidadeGrupos + 1];
            for (int i = 1; i <= parametrosCampeonato.QuantidadeGrupos; i++)
            {
                Grupos[i] = new Grupo(nome: $"Grupo {i}", tamanho: parametrosCampeonato.TamanhoGrupos);
            }
        }
Ejemplo n.º 6
0
        public void DeveReceberFichasDoJogadorQueJaEstaNoPote()
        {
            var idJogador            = 1;
            var fichasPrimeiraAposta = 100;
            var fichasSegundaAposta  = 150;
            var fichasEsperadas      = fichasPrimeiraAposta + fichasSegundaAposta;
            var poteGerado           = new Pote(1);

            poteGerado.AdicionarFichas(idJogador, fichasPrimeiraAposta);

            poteGerado.AdicionarFichas(idJogador, fichasSegundaAposta);

            Assert.Equal(fichasEsperadas, poteGerado.Fichas);
            Assert.Equal(fichasSegundaAposta, poteGerado.FichasMinimaDoPote);
            Assert.Contains(poteGerado.JogadoresNoPote, j => j == idJogador);
        }
Ejemplo n.º 7
0
        public static void Ex3()
        {
            Pote poteGrande = new Pote("Pote Grande");

            Pote poteMedio = new Pote("Pote Médio");

            Pote potePequeno = new Pote("Pote Pequeno");

            Biscoito biscoito = new Biscoito("Biscoito de Morango");

            Biscoito bolo = new Biscoito("Bolo de Chocolate");

            poteGrande.AdicionarConteudo(poteMedio);
            poteMedio.AdicionarConteudo(potePequeno);
            potePequeno.AdicionarConteudo(biscoito);
            potePequeno.AdicionarConteudo(bolo);
        }