Example #1
0
 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();
 }
Example #2
0
        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);
            }
        }
Example #4
0
 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();
                     }
                 }
             }
         }
     }
 }
Example #5
0
 public ObjetAbstrait(string nom, ZoneAbstraite position, int id)
 {
     this.position = position;
     this.nom      = nom;
     this.id       = id;
     //this.position = new BoutDeTerrain("", position.coordonnes);
 }
Example #6
0
 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();
                     }
                 }
             }
         }
     }
 }
Example #7
0
        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();
        }
Example #9
0
        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);
        }
Example #10
0
 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();
 }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        public Chemin(ZoneAbstraite debut, ZoneAbstraite fin) : base(debut, fin)
        {
            this.debut = debut;
            this.fin   = fin;

            debut.AjouteAcces(this);
            fin.AjouteAcces(this);
        }
Example #14
0
        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);
        }
Example #15
0
 public override void Analyse(PersonnageAbstrait personnage)
 {
     Console.WriteLine(personnage.Nom + " possède un objet Nourriture");
     if (personnage.BasePosition != null)
     {
         Destination = personnage.BasePosition;
     }
 }
Example #16
0
        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);
        }
Example #17
0
 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;
 }
Example #18
0
        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);
        }
Example #19
0
        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);
        }
Example #21
0
        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;
        }
Example #22
0
        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);
        }
Example #23
0
        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;
        }
Example #24
0
        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;
 }
Example #28
0
 public override List <ZoneAbstraite> déplacementPossible(ZoneAbstraite zone)
 {
     throw new NotImplementedException();
 }
Example #29
0
 public override void deplacer(ZoneAbstraite zone)
 {
     throw new NotImplementedException();
 }
Example #30
0
 public virtual void DeposerPheromone(ZoneAbstraite uneZone)
 {
     throw new NotImplementedException();
 }
Example #31
0
 public virtual void Creuser(ZoneAbstraite uneZone)
 {
     throw new NotImplementedException();
 }
Example #32
0
 public virtual void PrendreObjet(ZoneAbstraite uneZone)
 {
     throw new NotImplementedException();
 }
Example #33
0
 public virtual ObjetAbstrait ContientObjet(ObjetAbstrait unObjet, ZoneAbstraite uneZone)
 {
     throw new NotImplementedException();
 }
 public Acces(int id, ZoneAbstraite uneZoneOrigine, ZoneAbstraite uneZoneDestination)
     : base(id, uneZoneOrigine, uneZoneDestination)
 {
 }