示例#1
0
        internal override IJogador CalcularVencedor()
        {
            var             jogadores = ListarJogadores();
            var             grupos    = jogadores.Select(a => a.GrupoJogada).Distinct();
            List <IJogador> vencedoresProximaRodada = new List <IJogador>();
            List <IJogador> vencedoresGrupos        = new List <IJogador>();

            foreach (var grupo in grupos)
            {
                var jogadoresGrupoAtual  = jogadores.Where(a => a.GrupoJogada == grupo).ToArray();
                var vencedoresGrupoAtual = jogadoresGrupoAtual;

                while (vencedoresGrupoAtual.Count() > 1)
                {
                    for (int i = 0; i < vencedoresGrupoAtual.Count(); i += 2)
                    {
                        IJogador ganhadorJogada = ExecutorRodada.RealizarJogada(vencedoresGrupoAtual[i], vencedoresGrupoAtual[i + 1]);
                        vencedoresProximaRodada.Add(ganhadorJogada);
                    }

                    vencedoresGrupoAtual = vencedoresProximaRodada.ToArray();
                    vencedoresProximaRodada.Clear();
                }

                vencedoresGrupos.Add(vencedoresGrupoAtual.First());
            }

            IJogador vencedorCampeonato = vencedoresGrupos.Count() > 1 ? ExecutorRodada.RealizarJogada(vencedoresGrupos[0], vencedoresGrupos[1]) : vencedoresGrupos[0];

            return(vencedorCampeonato);
        }
        internal override IJogador CalcularVencedor()
        {
            var jogadores = ListarJogadores();

            if (jogadores.Count != QuantidadeJogadoresPermitidos)
            {
                throw new QuantidadeJogadoresException(String.Format("Quantidade de jogadores diferente de {0}!", QuantidadeJogadoresPermitidos));
            }

            IJogador vencedor = ExecutorRodada.RealizarJogada(jogadores[0], jogadores[1]);

            return(vencedor);
        }
示例#3
0
 public Torneio()
 {
     _jogadores     = new List <IJogador>();
     ExecutorRodada = new ExecutorRodada();
 }