Esempio n. 1
0
 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");
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 private void DeplacerPersonnage(PersonnageAbstrait unPersonnage, ZoneAbstraite zoneAbstraiteCible,
                                 ZoneAbstraite zoneAbstraiteSource)
 {
     unPersonnage.Position = zoneAbstraiteCible;
     zoneAbstraiteSource.RetirePersonnage(unPersonnage);
     zoneAbstraiteCible.AjoutePersonnage(unPersonnage);
 }
Esempio n. 4
0
 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--;
         }
     }
 }
Esempio n. 5
0
        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;
        }
Esempio n. 6
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;
                    }
                }
            }
                );
        }
Esempio n. 7
0
 public override void RetirePersonnage(PersonnageAbstrait perso)
 {
     if (PersonnagesList.Contains(perso))
     {
         perso.Position = null;
         PersonnagesList.Remove(perso);
     }
 }
Esempio n. 8
0
 public override void AjoutePersonnage(PersonnageAbstrait perso)
 {
     if (!PersonnagesList.Contains(perso))
     {
         PersonnagesList.Add(perso);
         perso.Position = this;
     }
 }
Esempio n. 9
0
        /// <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");
        }
Esempio n. 11
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);
        }
Esempio n. 12
0
 public override void Analyse(PersonnageAbstrait personnage)
 {
     Console.WriteLine(personnage.Nom + " possède un objet Nourriture");
     if (personnage.BasePosition != null)
     {
         Destination = personnage.BasePosition;
     }
 }
Esempio n. 13
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);
        }
Esempio n. 14
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);
        }
Esempio n. 15
0
 public void RetirePersonnage(PersonnageAbstrait unPersonnage)
 {
     if (!PersonnagesList.Contains(unPersonnage))
     {
         Console.WriteLine("Ce Personnage n'existe pas dans la liste");
     }
     PersonnagesList.Remove(unPersonnage);
 }
Esempio n. 16
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);
     }
 }
Esempio n. 17
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);
     }
 }
Esempio n. 18
0
 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));
 }
Esempio n. 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);
        }
Esempio n. 20
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);
     }
         );
 }
Esempio n. 21
0
        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--;
            }
        }
Esempio n. 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);
        }
Esempio n. 23
0
        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();
                }
            }
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
            }
        }
Esempio n. 27
0
 public virtual void Combattre(PersonnageAbstrait ennemi)
 {
     throw new NotImplementedException();
 }
Esempio n. 28
0
 public override void Combattre(PersonnageAbstrait ennemi)
 {
     Console.WriteLine("Combattre ennemi :" + ennemi.Nom);
     fourmi.Zone.LstPersonnages.Remove(ennemi);
     ennemi.Etat = CollectionEtat.EtatMort;
 }
Esempio n. 29
0
        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;
             */
        }
Esempio n. 30
0
 public override void AjoutePersonnage(PersonnageAbstrait unPersonnage)
 {
     PersonnagesList.Add(unPersonnage);
 }