Beispiel #1
0
        /// <summary>
        /// Algorithme de traitement au plus grand nombre (L'étage avec le plus grand nombre de cible visé est sélectionné à chaque boucle) => et ce de manière répétée
        /// </summary>
        private List <MaxTargetNumberSimulationWorker> AlgoAuPlusGrandNombre2(PlanTraitement plan)
        {
            // Création du tableau des (Etage/NbEnnemis)
            var etageNbEnnemis = GenererDicoEtageNbEnnemis(plan);

            // Sélection des étages avec le plus grand nombre
            var nbEnnemisMax = etageNbEnnemis.OrderByDescending(f => f.Value).First().Value;

            foreach (var etg in etageNbEnnemis.Where(f => f.Value == nbEnnemisMax || f.Value == nbEnnemisMax - 1))
            {
                var monScenario = new MaxTargetNumberSimulationWorker(plan.EnnemisAElliminer, etg.Key, nbEnnemisMax);
                GenererScenarii(monScenario);
            }

            return(MesScenarii);
        }
Beispiel #2
0
        private void GenererScenarii(MaxTargetNumberSimulationWorker scenar)
        {
            while (VerifierNbEnnemisEtage(
                       scenar.EtageActuel,
                       new PlanTraitement()
            {
                EnnemisAElliminer = scenar.EnnemisAElliminer, RunsPossibles = MonPlan.RunsPossibles
            }) == scenar.NbEnnemisParRun)
            {
                scenar.Objectifs[scenar.EtageActuel]++;
                foreach (Ennemi e in scenar.EtageActuel.ObtenirTousLesEnnemis())
                {
                    if (scenar.EnnemisAElliminer.ContainsKey(e.TitreSucces) && scenar.EnnemisAElliminer[e.TitreSucces] > 0)
                    {
                        scenar.EnnemisAElliminer[e.TitreSucces]--;
                    }
                }
            }

            if (scenar.IsTermine())
            {
                MesScenarii.Add(scenar);
            }
            else
            {
                // Création du tableau des (Etage/NbEnnemis)
                var etageNbEnnemis = GenererDicoEtageNbEnnemis(new PlanTraitement()
                {
                    EnnemisAElliminer = scenar.EnnemisAElliminer, RunsPossibles = MonPlan.RunsPossibles
                });

                // Sélection des étages avec le plus grand nombre
                var nbEnnemisMax = etageNbEnnemis.OrderByDescending(f => f.Value).First().Value;

                foreach (var etg in etageNbEnnemis.Where(f => f.Value == nbEnnemisMax))
                {
                    //var monScenario = new Scenario(plan.EnnemisAElliminer, etg.Key, nbEnnemisMax);
                    if (!scenar.Objectifs.ContainsKey(etg.Key))
                    {
                        scenar.Objectifs.Add(etg.Key, 0);
                    }
                    scenar.EtageActuel     = etg.Key;
                    scenar.NbEnnemisParRun = nbEnnemisMax;
                    GenererScenarii(scenar);
                }
            }
        }