コード例 #1
0
ファイル: CategoriaSaltoHipico.cs プロジェクト: abdelgnz/POO
        public void RegistrarParticipacion(Binomio unBinomio, int unTiempo,
            Dictionary<string, EstadoObstaculoPasado> colObstaculosPasados)
        {
            unBinomio.TiempoEmpleado = unTiempo;

            foreach (var pair in colObstaculosPasados)
            {
                Obstaculo obs = recorrido.Where( w => w.Obstaculo.Id == pair.Key ).FirstOrDefault().Obstaculo;
                                                                        // indica si se paso el obstaculo con exito o falla 
                unBinomio.AddObstaculoPasado( new ObstaculoPasado( obs, pair.Value ) );
            }
        }
コード例 #2
0
        public ResultadoParticipante Evaluar(List <Recorrido> pColObstaculosCategoria, int pTiempoEsperadoRecorrido,
                                             Binomio pBinomio)
        {
            ResultadoParticipante resultadoParticipante = new ResultadoParticipante();

            resultadoParticipante.Binomio        = pBinomio;
            resultadoParticipante.TiempoEmpleado = pBinomio.TiempoEmpleado;

            if (pBinomio.ObstaculosPasados.Count != pColObstaculosCategoria.Count)
            {
                resultadoParticipante.Descalificado = true; // descalificado por no recorrer todo los OBS
            }
            int k = 0;

            foreach (var rec in pColObstaculosCategoria.OrderBy(w => w.Orden))
            {
                if (pBinomio.ObstaculosPasados[k].Obstaculo.Id != rec.Obstaculo.Id)
                {
                    resultadoParticipante.Descalificado = true; //  por no seguir el orden los OBS
                    break;
                }

                k++;
            }

            // Los obstáculos pueden ser exigentes o simples. En caso de que un binomio derribe un obstáculo exigente,
            // se considera 3 faltas. Los obstáculos simples al derribarlos sólo determinan 1 falta.
            List <ObstaculoPasado> obstaculosPasadosConDerribo =
                pBinomio.ObstaculosPasados.Where(w => w.Estado == EstadoObstaculoPasado.derribo).ToList();

            foreach (var regObsPasadoConDerribo in obstaculosPasadosConDerribo)
            {
                resultadoParticipante.TotalFaltas += regObsPasadoConDerribo.Obstaculo.getFaltasXfalla();
            }

            // si los competidores exceden el tiempo esperado de recorrido son sancionados. Por cada
            // segundo de exceso de tiempo se considera una falta
            if (pBinomio.TiempoEmpleado > pTiempoEsperadoRecorrido)
            {
                int diferencia = pBinomio.TiempoEmpleado - pTiempoEsperadoRecorrido;

                resultadoParticipante.TotalFaltas = resultadoParticipante.TotalFaltas + diferencia * 1;
            }

            // calculamos los puntos obtenidos por el binomio
            resultadoParticipante.TotalPuntos =
                pBinomio.ObstaculosPasados.Where(w => w.Estado == EstadoObstaculoPasado.exito).Sum(w => w.Obstaculo.Puntaje);

            return(resultadoParticipante);
        }
コード例 #3
0
ファイル: CategoriaSaltoHipico.cs プロジェクト: abdelgnz/POO
 public void AddParticipante(Binomio pBinomio)
 {
     this.participantes.Add(pBinomio);
 }