public Oeuf(string nom, ZoneAbstraite position, int id, int type) : base(nom, position, id) { timer = 3; this.pointDeVie = 10; this.type = type; this.comportement = new ComportementEclore(); }
private Coordonnee GetMidPosition(ZoneAbstraite zone) { var posX = 1; var posY = 1; return(new Coordonnee(posX, posY)); }
public override ObjetAbstrait creerObjet(string nom, int TypeObjet, ZoneAbstraite position, EnvironnementAbstrait env) { id++; switch (TypeObjet) { case (int)FourmiliereConstante.typeObjectAbstrait.nourriture: { Nourriture n = new Nourriture(nom, position, id); env.ZoneAbstraiteList[position.coordonnes.x].zoneAbstraiteList[position.coordonnes.y].AjouteObjet(n); return(n); } case (int)FourmiliereConstante.typeObjectAbstrait.fourmiliere: { Fourmiliere f = new Fourmiliere(nom, position, id); env.ZoneAbstraiteList[position.coordonnes.x].zoneAbstraiteList[position.coordonnes.y].AjouteObjet(f); return(f); } case (int)FourmiliereConstante.typeObjectAbstrait.pheromoneInactive: { return(new PheromoneInactive(nom, position, id)); } default: return(null); } }
public override void RechercherObjet(ZoneAbstraite uneZone) { if (uneZone.LstObjets.Count > 0) { for (int x = fourmi.Position.X; x <= uneZone.LimitX; x++) { for (int y = fourmi.Position.Y; y <= uneZone.LimitY; y++) { foreach (ObjetAbstrait unObjet in uneZone.LstObjets) { if (fourmi.Position.X == unObjet.PositionObjet.X && fourmi.Position.Y == unObjet.PositionObjet.Y) { if (unObjet.GetType() == typeof(Pheromone)) { PrendreObjet(unObjet); uneZone.LstObjets.Remove(unObjet); // Envlève l'objet trouvé de la liste d'objets de la zone } } else { fourmi.Destination = new Coordonnee(x, y); Avancer(); } } } } } }
public ObjetAbstrait(string nom, ZoneAbstraite position, int id) { this.position = position; this.nom = nom; this.id = id; //this.position = new BoutDeTerrain("", position.coordonnes); }
public override void RechercherEnnemi(ZoneAbstraite uneZone) { if (uneZone.LstObjets.Count > 0) { for (int x = fourmi.Position.X; x <= uneZone.LimitX; x++) { for (int y = fourmi.Position.Y; y <= uneZone.LimitY; y++) { foreach (PersonnageAbstrait unPersonnage in uneZone.LstPersonnages) { if (fourmi.Position.X == unPersonnage.Position.X && fourmi.Position.Y == unPersonnage.Position.Y) { if (unPersonnage.GetType() != typeof(Fourmi)) { Combattre(unPersonnage); } } else { fourmi.Destination = new Coordonnee(x, y); Avancer(); } } } } } }
public override PersonnageAbstrait CreerPersonnage(string nom, ZoneAbstraite position) { if (nom == "reine") { //Vérifie que la reine a été créée qu'une fois if (Flag) { throw new Exception("La reine a déjà été créée"); } this.Flag = true; return(new Reine(ReinePtsVie, position, new StrategiePondre(), new EtatBase())); } switch (nom.ToLower()) { case "combatante": CompteurCombatante++; return(new Combatante("combatante", CompteurCombatante, CombatantePtsVie, new StrategieDefendreColonie(), new Observateurs.ObservateurCombatante(), position, new EtatBase())); case "cueilleuse": CompteurCueilleuse++; return(new Cueilleuse("cueilleuse", CompteurCueilleuse, CueilleusePtsVie, new StrategieChercherNourriture(), new Observateurs.ObservateurCueilleuse(), position, new EtatBase())); case "fourmi": CompteurFourmi++; return(new Fourmi("fourmi", CompteurFourmi, FourmiPtsVie, new StrategieExplorer(), new Observateurs.ObservateurFourmi(), position, new EtatBase())); default: CompteurFourmi++; return(new Fourmi("fourmi", CompteurFourmi, FourmiPtsVie, new StrategieExplorer(), new Observateurs.ObservateurFourmi(), position, new EtatBase())); } }
public override void DeposerPheromone(ZoneAbstraite uneZone) { Pheromone pheromone = fabrique.Creer(this.fourmi.Position); uneZone.LstObjets.Add(pheromone); fourmi.NotifierObs(); }
public override ZoneAbstraite ChoixZoneSuivante(List <AccesAbstrait> accesList, ZoneAbstraite zoneActuelle) { if ((Destination != null) && (Destination == zoneActuelle)) { Console.WriteLine("Nourriture ajoutée"); } else if (Destination != null) { foreach (var accesSuivant in accesList) { ZoneSuivante = accesSuivant.debut == zoneActuelle ? accesSuivant.fin : accesSuivant.debut; if ((zoneActuelle.X > Destination.X) && (ZoneSuivante.X < zoneActuelle.X)) { return(ZoneSuivante); } if ((zoneActuelle.X < Destination.X) && (ZoneSuivante.X > zoneActuelle.X)) { return(ZoneSuivante); } if ((zoneActuelle.Y > Destination.Y) && (ZoneSuivante.Y < zoneActuelle.Y)) { return(ZoneSuivante); } if ((zoneActuelle.Y < Destination.Y) && (ZoneSuivante.Y > zoneActuelle.Y)) { return(ZoneSuivante); } } } return(null); }
public FourmiOuvriere(string nom, ZoneAbstraite b, int id, EnvironnementAbstrait env) : base(nom, b, id, env) { nourriturePortee = false; this.champDeVision = 10; this.pointDeVie = 20; this.comportement = new ChercherAManger(); }
public MapZone GetCaseImage(ZoneAbstraite z, List <Personnage> liste, List <Quete> quete) { if (z != null) { MapZone map = new MapZone(z); BitmapSource bt = null; foreach (Personnage p in liste) { if (z != null && p != null && p.Position != null && p.Position.X == z.point.X && p.Position.Y == z.point.Y) { bt = ToWpfBitmap(p.Image); map.ToolTip += " " + p.Nom; } } if (bt == null) { foreach (Quete q in quete) { if (q.Type == TypeQuete.TrouverCase) { QueteZone qz = (QueteZone)q; if (qz != null && z != null && qz.ZoneATrouver.X == z.point.X && qz.ZoneATrouver.Y == z.point.Y) { bt = ToWpfBitmap(cible); } } } if (bt == null && (z.objets != null && z.objets.Count > 0)) { bt = ToWpfBitmap(objet); foreach (Objet o in z.objets) { if (o.monType == monTypeObjet.Portoloin) { bt = ToWpfBitmap(inconnu); } } } else if (bt == null && z.Walkable) { bt = ToWpfBitmap(standard); } else if (bt == null) { bt = ToWpfBitmap(obstacle); } } map.Source = bt; return(map); } return(null); }
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 Chemin(ZoneAbstraite debut, ZoneAbstraite fin) : base(debut, fin) { this.debut = debut; this.fin = fin; debut.AjouteAcces(this); fin.AjouteAcces(this); }
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 ZoneAbstraite repererZone(PersonnageAbstrait personnage, Type type, EnvironnementAbstrait env) { //champs de vision int champsVision = personnage.champDeVision; ZoneAbstraite pos = env.ZoneAbstraiteList[personnage.position.coordonnes.x].zoneAbstraiteList[personnage.position.coordonnes.y]; ZoneAbstraite zoneTrouvee = null; if (pos.containsObjet(type, env)) { zoneTrouvee = pos; } for (int i = -1 * champsVision; i <= champsVision && i >= -1 * champsVision && zoneTrouvee == null; i++) { bool iOk = false; if (i < 0 && pos.AccesAbstraitList[(int)FourmiliereConstante.direction.gauche] != null) { pos = pos.AccesAbstraitList[(int)FourmiliereConstante.direction.gauche].accesAbstrait.getFin(env); iOk = true; } else if (i > 0 && pos.AccesAbstraitList[(int)FourmiliereConstante.direction.droite] != null) { pos = pos.AccesAbstraitList[(int)FourmiliereConstante.direction.droite].accesAbstrait.getFin(env); iOk = true; } else if (i == 0) { iOk = true; } if (pos.containsObjet(type, env) || pos.containsObjet(type.BaseType, env)) { zoneTrouvee = pos; } if (iOk) { for (int j = -1 * champsVision; j <= champsVision && j >= -1 * champsVision && zoneTrouvee == null; j++) { if (j < 0 && pos.AccesAbstraitList[(int)FourmiliereConstante.direction.bas] != null) { pos = pos.AccesAbstraitList[(int)FourmiliereConstante.direction.bas].accesAbstrait.getFin(env); } else if (j > 0 && pos.AccesAbstraitList[(int)FourmiliereConstante.direction.haut] != null) { pos = pos.AccesAbstraitList[(int)FourmiliereConstante.direction.haut].accesAbstrait.getFin(env); } if (pos.containsObjet(type, env)) { zoneTrouvee = pos; } } } } /*if(zoneNourriture!=null) * personnage.position = zoneNourriture;*/ return(zoneTrouvee); }
public Reine(int vie, ZoneAbstraite position, StrategieAbstraite strat, EtatAbstrait etat) : base("reine", position, etat) { Nom = "reine"; _vie = vie; _strategie = strat; Oeuf = 1; Etat = etat; Position = position; }
public override List <ZoneAbstraite> déplacementPossible(ZoneAbstraite zone) { List <ZoneAbstraite> listeZones = new List <ZoneAbstraite>(); foreach (KeyValuePair <int, AccesAbstrait> pair in zone.zonesAdjacentes) { listeZones.Add(pair.Value.arrivée); } return(listeZones); }
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 override AccesAbstrait CreerAcces(ZoneAbstraite départ, ZoneAbstraite arrivée) { AccesAbstrait acces = new AccesRoute(); acces.départ = départ; acces.arrivée = arrivée; //Ajout de l'accès à la zone départ départ.zonesAdjacentes.Add(1, acces); return(acces); }
public PheromoneBas(string nom, ZoneAbstraite position, int id) : base(nom, position, id) { AccesAbstrait acces = null; foreach (PaireDirection p in position.AccesAbstraitList) { if (p.direction == (int)FourmiliereConstante.direction.bas) { acces = p.accesAbstrait; } } this.direction = (int)FourmiliereConstante.direction.bas; }
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 MapZone GetCaseImage(ZoneAbstraite z, List<Personnage> liste, List<Quete>quete) { if (z != null) { MapZone map = new MapZone(z); BitmapSource bt = null; foreach (Personnage p in liste) { if (z != null && p != null && p.Position != null && p.Position.X == z.point.X && p.Position.Y == z.point.Y) { bt = ToWpfBitmap(p.Image); map.ToolTip += " " + p.Nom; } } if (bt == null) { foreach (Quete q in quete) { if (q.Type == TypeQuete.TrouverCase) { QueteZone qz = (QueteZone)q; if (qz != null && z != null && qz.ZoneATrouver.X == z.point.X && qz.ZoneATrouver.Y == z.point.Y) bt = ToWpfBitmap(cible); } } if (bt == null && (z.objets != null && z.objets.Count > 0)) { bt = ToWpfBitmap(objet); foreach(Objet o in z.objets) if (o.monType == monTypeObjet.Portoloin) bt = ToWpfBitmap(inconnu); } else if (bt == null && z.Walkable) bt = ToWpfBitmap(standard); else if (bt == null) bt = ToWpfBitmap(obstacle); } map.Source = bt; return map; } return null; }
public override ZoneAbstraite AnalyserSituation(EnvironnementAbstrait env) { if (this.position.containsObjet(typeof(Nourriture), env)) { if (this.GetType().BaseType == typeof(Fourmi)) { Fourmi f = this; f.nourriturePortee = true; this.position.getNourriture(env).valeurNutritive--; } if (this.position.containsObjet(typeof(Nourriture), env)) { this.comportement = new RentrerFourmiliere(); } else { DecorateurSupprimerPheromone deco = new DecorateurSupprimerPheromone(); deco.ajouterComportement(new RentrerFourmiliere()); this.comportement = deco; } return(null); } else { ZoneAbstraite zoneOuAller = this.repererZone(this, typeof(PheromoneDroite), env); if (zoneOuAller == null) { zoneOuAller = this.repererZone(this, typeof(PheromoneGauche), env); } if (zoneOuAller == null) { zoneOuAller = this.repererZone(this, typeof(PheromoneHaut), env); } if (zoneOuAller == null) { zoneOuAller = this.repererZone(this, typeof(PheromoneBas), env); } if (zoneOuAller == null) { zoneOuAller = this.repererZone(this, typeof(Nourriture), env); } else { this.comportement = new SuivrePheromone(); this.executerComportement(env); } return(zoneOuAller); } }
public Reine CreerReine(ZoneAbstraite zone, Coordonnee position) { idGenerator++; Coordonnee posNoReference = new Coordonnee(position.X, position.Y); int PV = (ConfigurationManager.AppSettings["PointDeVie"] != null) ? Convert.ToInt32(ConfigurationManager.AppSettings["PointDeVie"]) : 100; Reine fourmi = new Reine.ReineBuilder(). BuildEtat(CollectionEtat.EtatOeuf). BuildId(idGenerator). BuildNom("Reine " + idGenerator). BuildPointVie(PV). BuildZone(zone). BuildPosition(posNoReference). Build(); return(fourmi); }
public Tunnel(int id, ZoneAbstraite boutTerrainUn, ZoneAbstraite boutTerrainDeux) : base(id, boutTerrainUn, boutTerrainDeux) { }
public AccesAbstrait(int id, ZoneAbstraite uneZoneOrigine, ZoneAbstraite uneZoneDestination) { _id = id; ZoneOrigine = uneZoneOrigine; ZoneDestination = uneZoneDestination; }
public override List <ZoneAbstraite> déplacementPossible(ZoneAbstraite zone) { throw new NotImplementedException(); }
public override void deplacer(ZoneAbstraite zone) { throw new NotImplementedException(); }
public virtual void DeposerPheromone(ZoneAbstraite uneZone) { throw new NotImplementedException(); }
public virtual void Creuser(ZoneAbstraite uneZone) { throw new NotImplementedException(); }
public virtual void PrendreObjet(ZoneAbstraite uneZone) { throw new NotImplementedException(); }
public virtual ObjetAbstrait ContientObjet(ObjetAbstrait unObjet, ZoneAbstraite uneZone) { throw new NotImplementedException(); }
public Acces(int id, ZoneAbstraite uneZoneOrigine, ZoneAbstraite uneZoneDestination) : base(id, uneZoneOrigine, uneZoneDestination) { }