예제 #1
0
        public ResultadoDaPartida(IParticipante vencedor, IParticipante derrotado)
        {
            if (vencedor == null)
            {
                throw new ArgumentNullException("O Vencedor não foi informado");
            }

            if (derrotado == null)
            {
                throw new ArgumentNullException("O Derrotado não foi informado");
            }

            _vencedor  = vencedor;
            _derrotado = derrotado;
        }
예제 #2
0
        public Confronto(IParticipante participante1, IParticipante participante2, int posicaoDoConfrontoNaFase)
        {
            if (participante1 == null || participante2 == null)
            {
                throw new ArgumentNullException("Os participantes não foran informados");
            }

            if (posicaoDoConfrontoNaFase <= 0)
            {
                throw new ArgumentException("Posição do confronto na fase inválida");
            }

            _participante1            = participante1;
            _participante2            = participante2;
            _posicaoDoConfrontoNaFase = posicaoDoConfrontoNaFase;
        }
        public IResultadoDaPartida DefinirVencedor()
        {
            IResultadoDaPartida resultadoDaPartida;
            IParticipante participante1 = _confronto.Participante1;
            IParticipante participante2 = _confronto.Participante2;

            if (participante1.FilmeParticipante.Nota == participante2.FilmeParticipante.Nota)
                if (participante1.PosicaoNaOrdemAlfabetica < participante2.PosicaoNaOrdemAlfabetica)
                    resultadoDaPartida = ResultadoPartidaFactory.Criar(participante1, participante2);
                else
                    resultadoDaPartida = ResultadoPartidaFactory.Criar(participante2, participante1);
            else if (participante1.FilmeParticipante.Nota > participante2.FilmeParticipante.Nota)
                resultadoDaPartida = ResultadoPartidaFactory.Criar(participante1, participante2);
            else
                resultadoDaPartida = ResultadoPartidaFactory.Criar(participante2, participante1);

            return resultadoDaPartida;
        }
예제 #4
0
        public IFase Inicializar()
        {
            int primeiraPosicao          = 1;
            int ultimaPosicao            = _participantes.OrderBy(participanteSelecionado => participanteSelecionado.PosicaoNaOrdemAlfabetica).Last().PosicaoNaOrdemAlfabetica;
            int posicaoDoConfrontoNaFase = 1;

            while (ultimaPosicao - primeiraPosicao > 0)
            {
                IParticipante participante1 = BuscarParticipantePorPosicaoNaOrdemAlfabetica(primeiraPosicao);
                IParticipante participante2 = BuscarParticipantePorPosicaoNaOrdemAlfabetica(ultimaPosicao);
                var           confronto     = ConfrontoFactory.Criar(participante1, participante2, posicaoDoConfrontoNaFase);

                _fase.AdicionarConfronto(confronto);

                primeiraPosicao++;
                ultimaPosicao--;
                posicaoDoConfrontoNaFase++;
            }
            return(_fase);
        }
예제 #5
0
        private IParticipante BuscarParticipantePorPosicaoNaOrdemAlfabetica(int posicaoNaOrdemAlfabetica)
        {
            IParticipante participante = _participantes.First(particimante => particimante.PosicaoNaOrdemAlfabetica == posicaoNaOrdemAlfabetica);

            return(participante);
        }
 public static IResultadoDaPartida Criar(IParticipante vencedor, IParticipante derrotado)
 {
     return(new ResultadoDaPartida(vencedor, derrotado));
 }
예제 #7
0
 public static IConfronto Criar(IParticipante participante1, IParticipante participante2, int posicaoDoConfrontoNaFase)
 {
     return(new Confronto(participante1, participante2, posicaoDoConfrontoNaFase));
 }