示例#1
0
        public void Mourrir(PersonnageAbstrait unPerso)
        {
            System.Windows.Application.Current.Dispatcher.Invoke(
                DispatcherPriority.Normal,
                (Action) delegate()
            {
                unPerso.ListEtape.Add(new Etape(0, "Je meurs.......", unPerso.Position.X, unPerso.Position.Y));
                PersonnagesMortList.Add(unPerso);
                PersonnagesList.Remove(unPerso);
                meteo.ListObservateur.Remove(unPerso);
                ListObservateur.Remove(unPerso);
                if (unPerso.Equals(reine))
                {
                    List <PersonnageAbstrait> princesses = PersonnagesList.Where(x => x.GetType().Equals(typeof(Princesse))).ToList();

                    if (princesses.Count > 0)
                    {
                        Princesse nouvelleReine = (Princesse)princesses[0];
                        coordMaison.X           = nouvelleReine.Position.X;
                        coordMaison.Y           = nouvelleReine.Position.Y;
                        reine = Reine.RemplacerReine(nouvelleReine);
                        PersonnagesList.Remove(nouvelleReine);
                        PersonnagesList.Add(reine);
                    }
                    else
                    {
                        reine = null;
                    }
                }
            }
                );
        }
示例#2
0
 public override void AjoutePersonnage(PersonnageAbstrait perso)
 {
     if (!PersonnagesList.Contains(perso))
     {
         PersonnagesList.Add(perso);
         perso.Position = this;
     }
 }
示例#3
0
 public override void RetirePersonnage(PersonnageAbstrait perso)
 {
     if (PersonnagesList.Contains(perso))
     {
         perso.Position = null;
         PersonnagesList.Remove(perso);
     }
 }
示例#4
0
 public override void AjouterReine()
 {
     if (PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).Count() == 0)
     {
         reine = (Reine)Fabrique.CreerReine("La reine", coordMaison);
         PersonnagesList.Add(reine);
     }
 }
示例#5
0
        public override void AjouterOuvriere()
        {
            PersonnageAbstrait g = Fabrique.CreerOuvriere(String.Format("Ouvriere {0}", PersonnagesList.Count), Fabrique.CreerPosition(coordMaison.X, coordMaison.Y), coordMaison);

            PersonnagesList.Add(g);
            ListObservateur.Add(g);
            meteo.ListObservateur.Add(g);
        }
示例#6
0
 public override void RetirePersonnage(PersonnageAbstrait perso)
 {
     //On vérifie l'existence du personnage
     if (PersonnagesList.Contains(perso))
     {
         //Si il exite, on remove
         PersonnagesList.Remove(perso);
     }
 }
示例#7
0
 public override void AjoutePersonnage(PersonnageAbstrait unPersonnage)
 {
     //On vérifie l'existence du personnage
     if (!PersonnagesList.Contains(unPersonnage))
     {
         //Si il n'exite pas , on ajoute
         PersonnagesList.Add(unPersonnage);
     }
 }
示例#8
0
 public override void AjouterTermite()
 {
     System.Windows.Application.Current.Dispatcher.Invoke(
         DispatcherPriority.Normal,
         (Action) delegate()
     {
         PersonnagesList.Add(Fabrique.CreerTermite(String.Format("Termite {0}", PersonnagesList.Count), Fabrique.CreerPosition(DimensionX, DimensionY), coordMaison));
     }
         );
 }
示例#9
0
 public void RemoveAll()
 {
     for (int i = PersonnagesList.Count - 1; i > 0; i--)
     {
         PersonnagesList.RemoveAt(i);
     }
     for (int i = PersonnagesMortList.Count - 1; i > 0; i--)
     {
         PersonnagesMortList.RemoveAt(i);
     }
 }
示例#10
0
 public void AjouterFourmi(PersonnageAbstrait fourmi)
 {
     System.Windows.Application.Current.Dispatcher.Invoke(
         DispatcherPriority.Normal,
         (Action) delegate()
     {
         PersonnagesList.Add(fourmi);
         meteo.Attach(fourmi);
         ListObservateur.Add(fourmi);
     }
         );
 }
示例#11
0
 public override void Repositioner()
 {
     foreach (var boutDeTerrain in ZoneList)
     {
         boutDeTerrain.PersonnageList.Clear();
         boutDeTerrain.ObjetList.Clear();
         boutDeTerrain.PersonnageList.AddRange(PersonnagesList.Where(x => x.Position.toString().Equals(boutDeTerrain.Position.toString())));
         boutDeTerrain.ObjetList.AddRange(ObjetList.Where(x => x.Position.toString().Equals(boutDeTerrain.Position.toString())));
         foreach (PersonnageAbstrait unPerso in PersonnagesList.Where(x => x.Position.toString().Equals(boutDeTerrain.Position.toString())))
         {
             unPerso.zone = boutDeTerrain;
         }
     }
 }
示例#12
0
 public override string Stats()
 {
     return(String.Format("Fourmies ouvrières nées : {0} \nFourmies ouvrières mortes : {1} \nFourmies guerrières nées : {2} \nFourmies guerrières mortes : {3} \nTermites nées : {4} \nTermites mortes : {5} \nPrincesses nées : {6} \nPrincesses mortes : {7} \nTransformations de princesses en reine : {8} \nReines mortes : {9}"
                          , (PersonnagesList.Where(x => x.GetType().Equals(typeof(Ouvriere))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Ouvriere))).Count())
                          , PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Ouvriere))).Count()
                          , (PersonnagesList.Where(x => x.GetType().Equals(typeof(Guerriere))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Guerriere))).Count())
                          , PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Guerriere))).Count()
                          , (PersonnagesList.Where(x => x.GetType().Equals(typeof(Termite))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Termite))).Count())
                          , PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Termite))).Count()
                          , ((PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Reine))).Count()) + (PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Princesse))).Count() - 1))
                          , PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Princesse))).Count()
                          , ((PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Reine))).Count()) - 1)
                          , (PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).Count() + PersonnagesMortList.Where(x => x.GetType().Equals(typeof(Reine))).Count())
                          ));
 }
示例#13
0
 public void TourSuivant()
 {
     foreach (Pheromone unePheromone in fourmilliere.ObjetAbstraitList.Where(x => x.GetType().Equals(typeof(Pheromone))).ToList())
     {
         if (unePheromone.Dureevie < 1)
         {
             fourmilliere.ObjetAbstraitList.Remove(unePheromone);
         }
     }
     foreach (ObjetAbstrait unObjet in fourmilliere.ObjetAbstraitList)
     {
         unObjet.TourPasse();
     }
     foreach (PersonnageAbstrait unInsecte in fourmilliere.PersonnageAbstraitList)
     {
         if (unInsecte.GetType().Equals(typeof(Ouvriere)) && unInsecte.TransporteNourriture == true)
         {
             Coordonnees coordonnees = new Coordonnees(unInsecte.Position.X, unInsecte.Position.Y);
             Pheromone   unPheromone = new Pheromone("pheromone", coordonnees);
             fourmilliere.ObjetAbstraitList.Add(unPheromone);
         }
         unInsecte.Avance1Tour(DimensionX, DimensionY);
         if (unInsecte.Pointsdevie <= 0)
         {
             PersonnagesMortList.Add(unInsecte);
             PersonnagesList.Remove(unInsecte);
         }
         //décommentes si tu veux que tes fourmis souillent la map avec leurs feromones
         //unInsecte.TransporteNourriture = true;
     }
     if (Hazard.Next(1, 11) == 1)
     {
         AjouteNourriture();
     }
     tourActuel++;
 }
示例#14
0
 public override void AjoutePersonnage(PersonnageAbstrait unPersonnage)
 {
     PersonnagesList.Add(unPersonnage);
 }
示例#15
0
 public virtual void AjoutePersonnage(PersonnageAbstrait unPersonnage)
 {
     PersonnagesList.Add(unPersonnage);
     ZoneAbstraitsList[0].AjoutePersonnage(unPersonnage);
     unPersonnage.Position = ZoneAbstraitsList[0];
 }
示例#16
0
 public override void AjoutePersonnage(PersonnageAbstrait perso)
 {
     PersonnagesList.Add(perso);
 }
示例#17
0
 public void AjouterTermite()
 {
     PersonnagesList.Add(Fabrique.CreerGuerriere("Termite " + PersonnagesList.Count));
 }
示例#18
0
 public void AjouterOuvriere()
 {
     PersonnagesList.Add(Fabrique.CreerOuvriere("Ouvriere " + PersonnagesList.Count));
 }
示例#19
0
 public void AjouterReine()
 {
     PersonnagesList.Add(Fabrique.CreerReine("Reine " + PersonnagesList.Count));
 }
示例#20
0
 public override void ChargerPersonnages(FabriqueAbstraite fabrique)
 {
     PersonnagesList.Add(fabrique.CreerPersonnage("fourmi"));
 }
示例#21
0
        public override void TourSuivant()
        {
            if (!ReineMorte())

            {
                if (reine.sousAttaque == false)
                {
                    if (Etat != "normal")
                    {
                        Etat = "normal";
                        Notify();
                    }
                }
                if (reine.sousAttaque == true)
                {
                    Etat = "attaque";
                    Notify();
                    reine.sousAttaque = false;
                }
                if (TourActuel % 10 == 0)
                {
                    meteoChange();
                }
                reine = (Reine)PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).FirstOrDefault();
                if (reine.OeufPondu != null)
                {
                    List <ObjetAbstrait> morceaux = ObjetList.Where(x => x.GetType().Equals(typeof(MorceauNourriture)) && x.Position.toString().Equals(reine.Position.toString())).ToList();
                    if (morceaux.Count > 0)
                    {
                        ObjetList.Remove(morceaux[0]);
                        ObjetList.Add(reine.OeufPondu);
                    }
                }
                reine.OeufPondu = null;
                foreach (Oeuf unOeuf in ObjetList.Where(x => x.GetType().Equals(typeof(Oeuf))).ToList())
                {
                    if (unOeuf.Age > Oeuf.DureeAvantEclosion - 1)
                    {
                        PersonnageAbstrait fourmi = unOeuf.fourmiARetourner;
                        fourmi.Nom += PersonnagesList.Count;
                        AjouterFourmi(fourmi);
                        ObjetList.Remove(unOeuf);
                    }
                }
                foreach (Pheromone unePheromone in ObjetList.Where(x => x.GetType().Equals(typeof(Pheromone))).ToList())
                {
                    if (unePheromone.Dureevie < 1)
                    {
                        ObjetList.Remove(unePheromone);
                    }
                }
                foreach (Nourriture nourriture in ObjetList.Where(x => x.GetType().Equals(typeof(Nourriture))).ToList())
                {
                    if (nourriture.ListMorceaux.Count < 1 || nourriture.Dureevie < 1)
                    {
                        ObjetList.Remove(nourriture);
                    }
                }
                foreach (ObjetAbstrait unObjet in ObjetList)
                {
                    unObjet.TourPasse(meteo);
                }
                Repositioner();
                FournirAcces();
                foreach (PersonnageAbstrait unInsecte in PersonnagesList.ToList())
                {
                    unInsecte.Avance1Tour(DimensionX, DimensionY, TourActuel);
                    if (unInsecte.GetType().Equals(typeof(Ouvriere)) && unInsecte.TransporteNourriture == true)
                    {
                        if (unInsecte.Position.toString().Equals(coordMaison.toString()))
                        {
                            Ouvriere          ouvriere = (Ouvriere)unInsecte;
                            MorceauNourriture morceau  = ouvriere.DeposeMorceau();
                            ObjetList.Add(morceau);
                        }
                        Coordonnees coordonnees = new Coordonnees(unInsecte.Position.X, unInsecte.Position.Y);
                        Pheromone   unPheromone = new Pheromone("pheromone", coordonnees);
                        ObjetList.Add(unPheromone);
                    }
                }
                List <PersonnageAbstrait> persosMorts = PersonnagesList.Where(x => x.PV < 1).ToList();
                foreach (PersonnageAbstrait persomort in persosMorts)
                {
                    Mourrir(persomort);
                }
                if (Hazard.Next(1, 7) == 1)
                {
                    AjouteNourriture();
                }

                if (TourActuel % 50 == 0)
                {
                    for (int i = 0; i < Config.nbrTermites; i++)
                    {
                        AjouterTermite();
                    }
                }
                TourActuel++;
            }
        }