public void Actualise(PersonnageAbstrait perso) { Combatante = (Combatante)perso; Vie = Combatante.Vie; Nom = Combatante.Nom; System.Diagnostics.Debug.WriteLine("Combatante n° " + Nom + " a " + Vie + " points de vie"); }
public override void AnalyseSituation() { PersonnageAbstrait persoInteraction = null; foreach (PersonnageAbstrait unPerso in zone.PersonnageList) { if (unPerso.GetType().Equals(typeof(Reine))) { persoInteraction = unPerso; break; /* unPerso.PV -= 20; * AjouterEtape(0, "J'attaque la Guerriere !", this.Position.X, this.Position.Y);*/ } else if (unPerso.GetType().Equals(typeof(Guerriere)) && persoInteraction == null) { persoInteraction = unPerso; } else if ((unPerso.GetType().Equals(typeof(Ouvriere)) || unPerso.GetType().Equals(typeof(Princesse))) && persoInteraction == null) { persoInteraction = unPerso; } } if (persoInteraction != null) { persoInteraction.PV -= 20; AjouterEtape(0, "J'attaque une " + persoInteraction.GetType().Name + " !", this.Position.X, this.Position.Y); } }
private void DeplacerPersonnage(PersonnageAbstrait unPersonnage, ZoneAbstraite zoneAbstraiteCible, ZoneAbstraite zoneAbstraiteSource) { unPersonnage.Position = zoneAbstraiteCible; zoneAbstraiteSource.RetirePersonnage(unPersonnage); zoneAbstraiteCible.AjoutePersonnage(unPersonnage); }
public override void Deplacement(int dimX, int dimY, PersonnageAbstrait unPerso) { if (unPerso.Position.Y != unPerso.Maison.Y) { if (unPerso.Position.Y < unPerso.Maison.Y) { unPerso.Position.Y++; } else { unPerso.Position.Y--; } } else if (unPerso.Position.X != unPerso.Maison.X) { if (unPerso.Position.X < unPerso.Maison.X) { unPerso.Position.X++; } else { unPerso.Position.X--; } } }
public override void Deplacement(int dimX, int dimY, PersonnageAbstrait unPerso) { int maCase = Hazard.Next(unPerso.ChoixZoneSuivante.Zonesaccessibles.Count); unPerso.Position.X = unPerso.ChoixZoneSuivante.Zonesaccessibles[maCase].Position.X; unPerso.Position.Y = unPerso.ChoixZoneSuivante.Zonesaccessibles[maCase].Position.Y; }
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 RetirePersonnage(PersonnageAbstrait perso) { if (PersonnagesList.Contains(perso)) { perso.Position = null; PersonnagesList.Remove(perso); } }
public override void AjoutePersonnage(PersonnageAbstrait perso) { if (!PersonnagesList.Contains(perso)) { PersonnagesList.Add(perso); perso.Position = this; } }
/// <summary> /// Actualise les informations de la fourmi /// </summary> /// <param name="perso"></param> public void Actualise(PersonnageAbstrait perso) { Reine = (Reine)perso; Vie = Reine.Vie; Oeufs = Reine.Oeuf; System.Diagnostics.Debug.WriteLine("[Observateur Reine] : " + " Vie: " + Vie + " Oeufs: " + Oeufs); }
/// <summary> /// Actualise les informations de la fourmi /// </summary> /// <param name="perso"></param> public void Actualise(PersonnageAbstrait perso) { Fourmi = (Fourmi)perso; Vie = Fourmi.Vie; Nom = Fourmi.Nom; System.Diagnostics.Debug.WriteLine("Fourmi n° " + Nom + " a " + Vie + " points de vie"); }
public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env) { List <Evenement> evenements = base.executer(personnage, env); ZoneAbstraite pos = personnage.position; env.ZoneAbstraiteList[pos.coordonnes.x].zoneAbstraiteList[pos.coordonnes.y].SupprimerPheromone(); return(evenements); }
public override void Analyse(PersonnageAbstrait personnage) { Console.WriteLine(personnage.Nom + " possède un objet Nourriture"); if (personnage.BasePosition != null) { Destination = personnage.BasePosition; } }
public override void DeplacerPersonnage(PersonnageAbstrait personnage, ZoneAbstraite zoneSource, ZoneAbstraite zoneDestination) { //On retire le personnage de l'emplacement ou il se trouve zoneSource.RetirePersonnage(personnage); //On ajoute le personnage a sa nouvelle zone zoneDestination.AjoutePersonnage(personnage); }
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); }
public void RetirePersonnage(PersonnageAbstrait unPersonnage) { if (!PersonnagesList.Contains(unPersonnage)) { Console.WriteLine("Ce Personnage n'existe pas dans la liste"); } PersonnagesList.Remove(unPersonnage); }
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); } }
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); } }
public Evenement depotNourriture(PersonnageAbstrait personnage, EnvironnementAbstrait env) { if (personnage.GetType() == typeof(Fourmi)) { ((Fourmi)personnage).nourriturePortee = false; personnage.comportement = new ChercherAManger(); //env.fourmiliere.valeurNutritiveTotalFourmiliere++; } return(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.passeLeTour)); }
public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env) { List <Evenement> evenements = new List <Evenement>(); if (personnage.position.coordonnes.x < FourmiliereConstante.fourmiliere.x) { ZoneAbstraite pos = env.ZoneAbstraiteList[personnage.position.coordonnes.x].zoneAbstraiteList[personnage.position.coordonnes.y].AccesAbstraitList[(int)FourmiliereConstante.direction.droite].accesAbstrait.getFin(env); if (!pos.ZoneBloquee()) { personnage.Bouger(pos); env.ZoneAbstraiteList[pos.coordonnes.x].zoneAbstraiteList[pos.coordonnes.y].AjouteObjet(new PheromoneGauche()); evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.mouvementDroit)); } } else if (personnage.position.coordonnes.x > FourmiliereConstante.fourmiliere.x) { ZoneAbstraite pos = env.ZoneAbstraiteList[personnage.position.coordonnes.x].zoneAbstraiteList[personnage.position.coordonnes.y].AccesAbstraitList[(int)FourmiliereConstante.direction.gauche].accesAbstrait.getFin(env); if (!pos.ZoneBloquee()) { personnage.Bouger(pos); env.ZoneAbstraiteList[pos.coordonnes.x].zoneAbstraiteList[pos.coordonnes.y].AjouteObjet(new PheromoneDroite()); evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.mouvementGauche)); } } else if (personnage.position.coordonnes.y < FourmiliereConstante.fourmiliere.y) { //haut ZoneAbstraite pos = env.ZoneAbstraiteList[personnage.position.coordonnes.x].zoneAbstraiteList[personnage.position.coordonnes.y].AccesAbstraitList[(int)FourmiliereConstante.direction.haut].accesAbstrait.getFin(env); if (!pos.ZoneBloquee()) { personnage.Bouger(pos); env.ZoneAbstraiteList[pos.coordonnes.x].zoneAbstraiteList[pos.coordonnes.y].AjouteObjet(new PheromoneBas()); evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.mouvementHaut)); } } else if (personnage.position.coordonnes.y > FourmiliereConstante.fourmiliere.y) { ZoneAbstraite pos = env.ZoneAbstraiteList[personnage.position.coordonnes.x].zoneAbstraiteList[personnage.position.coordonnes.y].AccesAbstraitList[(int)FourmiliereConstante.direction.bas].accesAbstrait.getFin(env); if (!pos.ZoneBloquee()) { personnage.Bouger(pos); env.ZoneAbstraiteList[pos.coordonnes.x].zoneAbstraiteList[pos.coordonnes.y].AjouteObjet(new PheromoneHaut()); evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.mouvementBas)); } } if (personnage.position.coordonnes.equals(FourmiliereConstante.fourmiliere) && ((Fourmi)personnage).nourriturePortee == true) { evenements.Add(depotNourriture(personnage, env)); ((Fourmi)personnage).nourriturePortee = false; personnage.comportement = new ChercherAManger(); env.fourmiliere.valeurNutritiveTotalFourmiliere++; } return(evenements); }
public void AjouterFourmi(PersonnageAbstrait fourmi) { System.Windows.Application.Current.Dispatcher.Invoke( DispatcherPriority.Normal, (Action) delegate() { PersonnagesList.Add(fourmi); meteo.Attach(fourmi); ListObservateur.Add(fourmi); } ); }
public void GererPersonnage() { int max = environnementFourmiliere.PersonnagesList.Count; for (int i = 0; i < max; i++) { PersonnageAbstrait p = environnementFourmiliere.PersonnagesList[i]; Console.WriteLine(p.GetType() + " " + p.nom + ", Position [" + p.position.coordonnes.x + ":" + p.position.coordonnes.y + "], Prochain tour : " + p.comportement + " point de vie :" + p.pointDeVie + " porte de la nourriture : " + ((Fourmi)p).nourriturePortee); this.evenements.AddRange(p.comportement.executer(p, environnementFourmiliere)); p.pointDeVie--; } }
public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env) { List <Evenement> evenements = comportement.executer(personnage, env); ZoneAbstraite newPosition = personnage.position; List <PersonnageAbstrait> listeFourmi = newPosition.ListeFourmiAlentours(env); foreach (PersonnageAbstrait f in listeFourmi) { Fourmi fourmi = (Fourmi)f; f.pointDeVie++; } return(evenements); }
public override void Analyse(PersonnageAbstrait personnage) { foreach (var objet in personnage.Position.ObjectsList) { if ((objet is Nourriture) && (personnage is Cueilleuse)) { personnage.Etat = new EtatObjet(); } if ((objet is Oeuf) && (personnage is Cueilleuse)) { objet.IsTake = true; personnage.Etat = new EtatOeuf(); } } }
public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env) { FabriqueAbstraite fabriqueFourmiliere = new FabriqueFourmiliere(); List <Evenement> evenements = new List <Evenement>(); if (personnage.GetType() == typeof(Oeuf)) { Oeuf oeuf = (Oeuf)personnage; oeuf.timer--; if (oeuf.timer == 0) { evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.eclore)); oeuf.pointDeVie = 0; } } return(evenements); }
public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env) { FabriqueAbstraite fabriqueFourmiliere = new FabriqueFourmiliere(); List <Evenement> evenements = new List <Evenement>(); if (env.fourmiliere.valeurNutritiveTotalFourmiliere >= 2) { Console.Write("Ponte oeuf/n"); Random r = new Random((int)DateTime.Now.Ticks); int rnd = r.Next((int)FourmiliereConstante.typeFourmie.oeufFourmiOuvriere, (int)FourmiliereConstante.typeFourmie.oeufFourmiChaman); env.AjouterPersonnage(fabriqueFourmiliere.creerPersonnage("oeuf" + FabriqueFourmiliere.id, rnd, env.fourmiliere.position, env)); evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.pondreOeuf)); env.fourmiliere.valeurNutritiveTotalFourmiliere -= 2; } return(evenements); }
public void Eclore() { int res = Fourmiliere.Hazard.Next(1, 100); if (res > 0 && res <= Config.probaOuvriere) { fourmiARetourner = Fourmiliere.Fabrique.CreerOuvriere("Ouvriere N°", Fourmiliere.Fabrique.CreerPosition(Fourmiliere.coordMaison.X, Fourmiliere.coordMaison.Y), Fourmiliere.coordMaison); } else if (res > Config.probaOuvriere && res < (Config.probaOuvriere + Config.probaGuerriere)) { fourmiARetourner = Fourmiliere.Fabrique.CreerGuerriere("Guerriere N°", Fourmiliere.Fabrique.CreerPosition(Fourmiliere.coordMaison.X, Fourmiliere.coordMaison.Y), Fourmiliere.coordMaison); } else { fourmiARetourner = Fourmiliere.Fabrique.CreerPrincesse("Princesse N°", Fourmiliere.Fabrique.CreerPosition(Fourmiliere.coordMaison.X, Fourmiliere.coordMaison.Y), Fourmiliere.coordMaison); } }
public virtual void Combattre(PersonnageAbstrait ennemi) { throw new NotImplementedException(); }
public override void Combattre(PersonnageAbstrait ennemi) { Console.WriteLine("Combattre ennemi :" + ennemi.Nom); fourmi.Zone.LstPersonnages.Remove(ennemi); ennemi.Etat = CollectionEtat.EtatMort; }
public override void Deplacement(int dimX, int dimY, PersonnageAbstrait unPerso) { ObservableCollection <ZoneAbstrait> zoneAccessible = new ObservableCollection <ZoneAbstrait>(); ZoneAbstrait zoneFourmille = null; foreach (ZoneAbstrait uneZone in unPerso.ChoixZoneSuivante.Zonesaccessibles) { /*si on trouve une Fourmille on l'attaque*/ if (uneZone.PersonnageList.Where(x => x.GetType().Equals(typeof(Reine))).Count() > 0) { zoneFourmille = uneZone; break; } else if (uneZone.PersonnageList.Where(x => x.GetType().Equals(typeof(Ouvriere))).Count() > 0) { zoneFourmille = uneZone; break; } else if (uneZone.PersonnageList.Where(x => x.GetType().Equals(typeof(Guerriere))).Count() > 0) { zoneFourmille = uneZone; break; } else { zoneAccessible.Add(uneZone); } } if (zoneFourmille != null) { unPerso.Position.X = zoneFourmille.Position.X; unPerso.Position.Y = zoneFourmille.Position.Y; } else { int maCase = Hazard.Next(zoneAccessible.Count); zoneAccessible.OrderByDescending(x => x.Position.X); if (unPerso.Position.X > unPerso.Maison.X) { if (zoneAccessible[maCase].Position.X != unPerso.Position.X && (unPerso.Position.X - unPerso.Maison.X) > zoneAccessible[maCase].Position.X - unPerso.Maison.X) { unPerso.Position.X = zoneAccessible[maCase].Position.X; } } else { if (zoneAccessible[maCase].Position.X != unPerso.Position.X && (unPerso.Position.X - unPerso.Maison.X) < zoneAccessible[maCase].Position.X - unPerso.Maison.X) { unPerso.Position.X = zoneAccessible[maCase].Position.X; } } if (unPerso.Position.Y > unPerso.Maison.Y) { if (zoneAccessible[maCase].Position.Y != unPerso.Position.Y && (unPerso.Position.Y - unPerso.Maison.Y) > zoneAccessible[maCase].Position.Y - unPerso.Maison.Y) { unPerso.Position.Y = zoneAccessible[maCase].Position.Y; } } else { if (zoneAccessible[maCase].Position.Y != unPerso.Position.Y && (unPerso.Position.Y - unPerso.Maison.Y) < zoneAccessible[maCase].Position.Y - unPerso.Maison.Y) { unPerso.Position.Y = zoneAccessible[maCase].Position.Y; } } } /* * int newX = unPerso.Position.X + Hazard.Next(3) - 1; * int newY = unPerso.Position.Y + Hazard.Next(3) - 1; * if ((newX >= 0) && (newX < dimX) && (newX<=unPerso.Maison.X+5) && (newX>=unPerso.Maison.X-5)) unPerso.Position.X = newX; * if ((newY >= 0) && (newY < dimX) && (newY <= unPerso.Maison.Y + 5) && (newY >= unPerso.Maison.Y - 5)) unPerso.Position.Y = newY; */ }
public override void AjoutePersonnage(PersonnageAbstrait unPersonnage) { PersonnagesList.Add(unPersonnage); }