Esempio n. 1
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. 2
0
        public void AjouteNourriture()
        {
            CoordonneesAbstrait position = new Coordonnees(Hazard.Next(1, DimensionX), Hazard.Next(1, DimensionY));

            while (position.X.Equals(coordMaison.X) || position.Y.Equals(coordMaison.Y))
            {
                position = new Coordonnees(Hazard.Next(1, DimensionX), Hazard.Next(1, DimensionY));
            }
            ObjetList.Add(Fabrique.CreerNourriture("Nourriture N " + ObjetList.Count, position));
        }
Esempio n. 3
0
        public void meteoChange()
        {
            int rand = Hazard.Next(1, 100);

            if (rand > 0 && rand < Config.probaPluie)
            {
                meteo.Etat = "pluie";
                meteo.Notify();
            }
            else if (rand > Config.probaPluie && rand < (Config.probaPluie + Config.probaBrouillard))
            {
                meteo.Etat = "brouillard";
                meteo.Notify();
            }
            else
            {
                meteo.Etat = "soleil";
                meteo.Notify();
            }
        }
Esempio n. 4
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. 5
0
        public override void Deplacement(int dimX, int dimY, PersonnageAbstrait unPerso)
        {
            ObservableCollection <ZoneAbstrait> zoneAccessible = new ObservableCollection <ZoneAbstrait>();
            ZoneAbstrait zoneTermite = null;

            foreach (ZoneAbstrait uneZone in unPerso.ChoixZoneSuivante.Zonesaccessibles)
            {
                if (uneZone.Position.Y >= unPerso.Maison.Y - 5 && uneZone.Position.Y <= unPerso.Maison.Y + 5 && uneZone.Position.X >= unPerso.Maison.X - 5 && uneZone.Position.X <= unPerso.Maison.X + 5)
                {
                    /*si on un termite on l'attaque*/
                    if (uneZone.PersonnageList.Where(x => x.GetType().Equals(typeof(Termite))).Count() > 0)
                    {
                        zoneTermite = uneZone;
                        break;
                    }
                    else
                    {
                        zoneAccessible.Add(uneZone);
                    }
                }
            }

            if (zoneTermite != null)
            {
                unPerso.Position.X = zoneTermite.Position.X;
                unPerso.Position.Y = zoneTermite.Position.Y;
            }
            else
            {
                int maCase = Hazard.Next(zoneAccessible.Count);
                if (zoneAccessible.Count > 0)
                {
                    unPerso.Position.X = zoneAccessible[maCase].Position.X;
                    unPerso.Position.Y = zoneAccessible[maCase].Position.Y;
                }
                /*retour a la fourmilliere si elle a bougé a plus de 5 y et 5 x*/
                else
                {
                    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--;
                        }
                    }
                }
            }

            /*
             * 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. 6
0
        public override void Deplacement(int dimX, int dimY, PersonnageAbstrait unPerso)
        {
            ObservableCollection <ZoneAbstrait> zonePheromone  = new ObservableCollection <ZoneAbstrait>();
            ObservableCollection <ZoneAbstrait> zoneAccessible = new ObservableCollection <ZoneAbstrait>();
            ZoneAbstrait zoneNourriture = null;

            //Console.WriteLine(unPerso.ChoixZoneSuivante.Zonesaccessibles.Count);
            foreach (ZoneAbstrait uneZone in unPerso.ChoixZoneSuivante.Zonesaccessibles)
            {
                if (uneZone.PersonnageList.Where(x => x.GetType().Equals(typeof(Termite))).Count() == 0)
                {
                    /*si on trouve de la nourriture on go*/
                    try
                    {
                        if (uneZone.ObjetList.Where(x => x.GetType().Equals(typeof(Nourriture))).Count() > 0)
                        {
                            zoneNourriture = uneZone;
                            break;
                        }
                        else if (uneZone.ObjetList.Where(x => x.GetType().Equals(typeof(Pheromone))).Count() > 0)
                        {
                            zonePheromone.Add(uneZone);
                        }
                        else
                        {
                            zoneAccessible.Add(uneZone);
                        }
                    }catch (Exception e)
                    {
                        e.ToString();
                    }
                }
            }

            if (zoneNourriture != null)
            {
                unPerso.Position.X = zoneNourriture.Position.X;
                unPerso.Position.Y = zoneNourriture.Position.Y;
            }
            else if (zonePheromone.Count > 0)
            {
                ZoneAbstrait zoneMinPhero = null;
                int          dureeDeVeMin = Pheromone.DureeVieOriginale;
                foreach (ZoneAbstrait uneZone in zonePheromone)
                {
                    foreach (Pheromone phermonoe in uneZone.ObjetList.Where(x => x.GetType().Equals(typeof(Pheromone))))
                    {
                        if (phermonoe.Dureevie < dureeDeVeMin)
                        {
                            dureeDeVeMin = phermonoe.Dureevie;
                            zoneMinPhero = uneZone;
                        }
                    }
                }

                unPerso.Position.X = zoneMinPhero.Position.X;
                unPerso.Position.Y = zoneMinPhero.Position.Y;
            }
            else
            {
                /*Selectionne une case vide au harzard*/
                int maCase = Hazard.Next(zoneAccessible.Count);

                /*Récupération de l'ancienne case pour ne pas retourner en arriere*/
                int oldX = unPerso.ListEtape[unPerso.ListEtape.Count - 1].position.X;
                int oldY = unPerso.ListEtape[unPerso.ListEtape.Count - 1].position.Y;
                while ((unPerso.Position.Y == zoneAccessible[maCase].Position.Y && unPerso.Position.X == zoneAccessible[maCase].Position.X) || (zoneAccessible[maCase].Position.X == oldX && zoneAccessible[maCase].Position.Y == oldY))
                {
                    maCase = Hazard.Next(zoneAccessible.Count);
                }
                unPerso.Position.X = zoneAccessible[maCase].Position.X;
                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)) unPerso.Position.X = newX;
                 * if ((newY >= 0) && (newY < dimX)) unPerso.Position.Y = newY;*/
            }
        }
Esempio n. 7
0
        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++;
            }
        }