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; } } } ); }
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); } }
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; } } }
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()) )); }
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++; } }