Beispiel #1
0
        /// <summary>
        /// Methode de combat entre rats et pigeons un des deux doit sortir vivant et l'autre est mort, il est supprimer de la liste via l'appelle de la methode MortNuisible
        /// Elle ne fait rien si les deux objet sont de la meme origine
        /// </summary>
        /// <param name="firstChallenger">Premier objet nuisible</param>
        /// <param name="secondChallenger">Second objet nuisible</param>
        /// <param name="random"> variable random permettant de definir quiva vivre et qui va mourrir</param>
        /// <param name="vivant"> La liste des vivant qui sera modifier en conseqence dans cette methode</param>
        private static void Combat(Nuisible firstChallenger, Nuisible secondChallenger, int random, List <Nuisible> vivant)
        {
            Console.WriteLine("-------- Regular Fight --------");
            string firstOrigin  = firstChallenger.GetChildClass();
            string secondOrigin = secondChallenger.GetChildClass();

            if (firstOrigin == "rat" && random == 0 && secondOrigin == "pigeon" || firstOrigin == "pigeon" && random == 1 && secondOrigin == "rat")
            {
                Console.WriteLine("Le nuisible ID : " + secondChallenger.ID + " " + secondOrigin + " a tuer le nuisible ID : " + firstChallenger.ID + " " + firstOrigin);
                Nuisible.MortNuisible(firstChallenger, vivant);
                firstChallenger.Etat = "MORT";
            }
            else
            {
                if (firstOrigin == "rat" && random == 1 && secondOrigin == "pigeon" || firstOrigin == "pigeon" && random == 0 && secondOrigin == "rat")
                {
                    Console.WriteLine("Le nuisible ID : " + firstChallenger.ID + " " + firstOrigin + " a tuer le nuisible ID : " + secondChallenger.ID + " " + secondOrigin);
                    Nuisible.MortNuisible(secondChallenger, vivant);
                    secondChallenger.Etat = "MORT";
                }
                else
                {
                    Console.WriteLine("impossible de faire combattre un " + firstOrigin + " et un " + secondOrigin);
                }
            }
            Console.WriteLine("\n");
        }
Beispiel #2
0
        /// <summary>
        /// Methode factory pour la creation des nuisibles suivant les parametre
        /// </summary>
        /// <param name="nbRat">Nombre de rat a cree dans l'ecosysteme</param>
        /// <param name="nbPigeon">Nombre de pigeon a cree dans l'ecosysteme</param>
        /// <param name="nbZombie">Nombre de zombie a cree dans l'ecosysteme</param>
        /// <param name="mesNuisibles">Listes des nuisibles qui vont evoluer dans l'ecosysteme</param>
        protected static void FactoryCreator(int nbRat, int nbPigeon, int nbZombie, List <Nuisible> mesNuisibles)
        {
            int nbTotalNuisible = nbRat + nbPigeon + nbZombie;

            // Tableau de creation
            NuisibleFactory[] creators = new NuisibleFactory[nbTotalNuisible];

            int globalCount = 0;

            for (int y = 0; y < nbRat; y++)
            {
                creators[globalCount] = new RatFactory();
                globalCount++;
            }
            for (int y = 0; y < nbPigeon; y++)
            {
                creators[globalCount] = new PigeonFactory();
                globalCount++;
            }
            for (int y = 0; y < nbZombie; y++)
            {
                creators[globalCount] = new ZombieFactory();
                globalCount++;
            }

            // Ajout de chaque nuisible cree dans la liste : nuisible
            foreach (NuisibleFactory creator in creators)
            {
                Nuisible leNouveau = creator.Create();
                mesNuisibles.Add(leNouveau);
            }
        }
Beispiel #3
0
 // Methode de zombification
 private static void Zombification(Nuisible newZombie)
 {
     if (newZombie.Etat != "MORT-VIVANT")
     {
         Console.WriteLine("-------- Zombification --------");
         Console.WriteLine("Le nuisible ID : " + newZombie.ID + " est devenu un zombie");
         newZombie.Etat = "MORT-VIVANT";
     }
     // newZombie.VitesseDeplacement = 5;
 }
Beispiel #4
0
        /// Methodes Static Public :

        /// <summary>
        /// Methode de test de collision entre les nuisibles de la liste.
        /// Envoie a la methode collisionsplit les deux nuisibles etant sur la meme case ainsi que la liste des nuisible et un random
        ///
        /// La methode parcours le tableau en recuperant les positions de chaque nuisibles et les comparent entre elles.
        /// </summary>
        /// <param name="nuisibles">Liste des nuisibles evoluant dans l'ecosysteme</param>
        public static void TestCollision(List <Nuisible> nuisibles)
        {
            Random aleatoire = new Random();

            foreach (Nuisible nuisible in nuisibles.ToList())
            {
                IEnumerable <Nuisible> memePos = nuisibles.Where((x) => x != nuisible && x.PositionX == nuisible.PositionX && x.PositionY == nuisible.PositionY);

                var memePasArray = memePos.ToArray();

                //Console.WriteLine("L'objet numero : " + nuisible.ID + " est en collision avec : " + test1.Length + " Objet(s) ");
                for (int y = 0; y < memePasArray.Length; y++)
                {
                    if (memePasArray[y].ID > nuisible.ID)
                    {
                        Console.WriteLine("Le nuisible ID : " + nuisible.ID + " est en collision avec le nuisible ID : " + memePasArray[y].ID);
                        int temprandom = aleatoire.Next(0, 2);
                        Nuisible.CollisionSplit(memePasArray[y], nuisible, temprandom, nuisibles);
                    }
                }
            }
        }
Beispiel #5
0
 // Methode de test suite a une collision
 /// <summary>
 /// La methode split permet de comparer l'origine des objet et d'appeller la methode adapter en foction de cette origine.
 /// Elle s'ocupe de renvoyer vers la methode zombification si un des deux objets est un zombie et l'autre non
 /// Elle s'occupe de renvoyer vers la methode combat si ce sont des rats ou des pigeons
 /// </summary>
 /// <param name="firstChallenger">Premier objet nuisible</param>
 /// <param name="secondChallenger">Second objet nuisible</param>
 /// <param name="random"> Variable pour la future bataille</param>
 /// <param name="vivant"> list des nuisible vivant evoluant dans l'ecosysteme</param>
 private static void CollisionSplit(Nuisible firstChallenger, Nuisible secondChallenger, int random, List <Nuisible> vivant)
 {
     if (firstChallenger.Etat == "MORT-VIVANT" || secondChallenger.Etat == "MORT-VIVANT")
     {
         if (firstChallenger.Etat != "MORT-VIVANT" && secondChallenger.Etat == "MORT-VIVANT")
         {
             Nuisible.Zombification(firstChallenger);
             Console.WriteLine("Il c'est fait transformer par le nuisible ID : " + secondChallenger.ID);
             Console.WriteLine("\n");
         }
         else
         {
             if (secondChallenger.Etat != "MORT-VIVANT" && firstChallenger.Etat == "MORT-VIVANT")
             {
                 Nuisible.Zombification(secondChallenger);
                 Console.WriteLine("Il c'est fait transforme par le nuisible ID : " + firstChallenger.ID);
                 Console.WriteLine("\n");
             }
             else
             {
                 if (firstChallenger.Etat == "MORT-VIVANT" && secondChallenger.Etat == "MORT-VIVANT")
                 {
                     Console.WriteLine("Les nuisibles : " + firstChallenger.ID + " et " + secondChallenger.ID + " sont tout deux des Zombies");
                 }
                 else
                 {
                     Console.WriteLine("L'etat de first challenger est : " + firstChallenger.Etat);
                     Console.WriteLine("L'etat du second challenger est :" + secondChallenger.Etat);
                     Console.WriteLine("Il y a clairement un bug dans la matrice !");
                 }
             }
         }
     }
     else
     {
         Nuisible.Combat(firstChallenger, secondChallenger, random, vivant);
     }
 }
Beispiel #6
0
        static void Main(string[] args)
        {
            // Initialisation des variables de parametrages
            List <Nuisible> nuisibles     = new List <Nuisible>();
            int             ecosytemeLimX = 100;
            int             ecosytemeLimY = 100;
            int             maxNuisible   = 200;
            int             nbTics        = 1000;

            // Initialisation de la variable random
            Random aleatoire = new Random();


            //Nuisible zombieLabo = new Zombie();
            //PigeonMutantDecorator monMutant = new PigeonMutantDecorator(zombieLabo);
            //var testMutant = monMutant.Force;
            //var ttestZombeLabo = zombieLabo;
            //Console.WriteLine(testMutant);


            // Choix du Type d'ecosysteme et generation des nuisibles
            Console.WriteLine("Pour initialiser la simulation veuillez choisir un type d'ecosysteme : Aleatoire, UmbrellaCorp ou Citadin");
            string chooseEcoType = Console.ReadLine();

            while (chooseEcoType != "Aleatoire" && chooseEcoType != "UmbrellaCorp" && chooseEcoType != "Citadin")
            {
                Console.WriteLine("Desoler type d'ecosysteme : " + chooseEcoType + " n'existe pas :/ ");
                Console.WriteLine("Veuillez choisir le type d'ecosysteme parmi ceux proposer ci-dessus!");
                Console.WriteLine();
                chooseEcoType = Console.ReadLine();
                Console.WriteLine("\n");
            }

            // Initialisation de l'ecosysteme en fonction du choix
            Ecosysteme.InitEcoSysteme(chooseEcoType, maxNuisible, nuisibles, ecosytemeLimX, ecosytemeLimY);


            Console.WriteLine("\n");
            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("-- Debut de l'initialisation des positions -- ");
            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("\n");


            // initialisation des positions et des ID pour chaque nuisible present dans la liste
            int i = 0;

            foreach (Nuisible nuisible in nuisibles)
            {
                i = i + 1;
                int minPos  = 0;
                int maxPosX = ecosytemeLimX + 1;
                int maxPosY = ecosytemeLimY + 1;
                int tempx   = aleatoire.Next(minPos, maxPosX);
                int tempy   = aleatoire.Next(minPos, maxPosY);
                nuisible.PositionX = tempx;
                nuisible.PositionY = tempy;
                nuisible.ID        = i;
                string tempChildClass = nuisible.GetChildClass();
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("La position initial du " + tempChildClass + " ayant pour ID : " + nuisible.ID + " est : " + nuisible.PositionX + "X" + nuisible.PositionY + "Y");
            }

            Console.WriteLine("\n");
            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("-- Fin de l'initialisation des positions -- ");
            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("\n");

            Console.ReadLine();
            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("-- Debut de la simulation -- ");
            Console.WriteLine("--------------------------------- ");

            /// BOUCLE D'EVOLUTION DE L'ECOSYSTEME
            for (int z = 0; z < nbTics; z++)
            {
                Console.WriteLine("\n");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("-- Debut des deplacement des nuisibles pour ce tour -- ");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("\n");

                // Deplacement aleatoire des nuisibles
                Nuisible.Deplacement(ecosytemeLimX, ecosytemeLimY, nuisibles);


                Console.WriteLine("\n");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("-- Fin des deplacement des nuisibles pour ce tour -- ");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("\n");


                Console.WriteLine("\n");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("-- Debut des evenements -- ");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("\n");


                // Collisions entre les nuisibles application de la methode adapte a chaque situation
                Nuisible.TestCollision(nuisibles);

                Console.WriteLine("\n");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("-- Fin des evenements -- ");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("\n");



                Console.WriteLine("\n");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("-- Etat de l'ecosysteme a la fin de ce tour -- ");
                Console.WriteLine("--------------------------------- ");
                Console.WriteLine("\n");

                // Lecture du tableau nuisble
                foreach (Nuisible nuisible in nuisibles)
                {
                    string tempClass = nuisible.GetChildClass();
                    Console.WriteLine("--------------------------------- ");
                    Console.WriteLine("Le Nuisible d'ID : " + nuisible.ID + " est un " + tempClass + " son etat actuel est : " + nuisible.Etat);

                    //Console.WriteLine("La position final de " + nuisible.ID + " est : " + nuisible.PositionX + "X" + nuisible.PositionY + "Y  ayant pour orientation " + orientation + " et se deplace a une vitesse de " + nuisible.VitesseDeplacement);
                }

                Console.WriteLine("\n");
                int affichTour = z + 1;
                Console.WriteLine("Vous venez de terminer le tour numero : " + affichTour);
                //Console.ReadLine();
            }

            Console.WriteLine("--------------------------------- ");
            Console.WriteLine("-- Fin de la simulation -- ");
            Console.WriteLine("--------------------------------- ");

            Console.ReadLine();
        }
Beispiel #7
0
 public Decorator(Nuisible monNuisible)
 {
     this.monNuisible = monNuisible;
 }
Beispiel #8
0
 /// Methodes Static Private :
 //  Methode de suppression d'instance et suppression dans la liste des vivants
 private static void MortNuisible(Nuisible obj, List <Nuisible> vivant)
 {
     vivant.Remove(obj);
     obj = null;
 }