Пример #1
0
 public Concierge(TuileZoo position)
 {
     Position = position;
     Image    = TileSetGenerator.GetTile(TileSetGenerator.C_DOWN_IDLE);
     Zoo.ListeEntites.Add(this);
     TileSetSprite = 75;
 }
Пример #2
0
 /// <summary>
 /// Ajout d'une case à la liste si l'animal peut s'y déplacer
 /// </summary>
 /// <param name="possibilite"></param>
 /// <param name="casesDisponibles"></param>
 private void AjouterCaseAListe(TuileZoo possibilite, List <TuileZoo> casesDisponibles)
 {
     if (PeutSeDeplacer(possibilite))
     {
         casesDisponibles.Add(possibilite);
     }
 }
Пример #3
0
 /// <summary>
 /// Ajoute une TuileZoo à la liste de cases où l'humain peut se déplacer.
 /// </summary>
 /// <param name="possibilite">Une TuileZoo autour de l'humain</param>
 /// <param name="casesDisponibles">La liste de TuileZoos autour de l'humain</param>
 /// <param name="d">La direction de la possibilité par rapport à sa case actuelle</param>
 /// <returns></returns>
 protected List <KeyValuePair <TuileZoo, Direction> > AjouterCaseAListe(TuileZoo possibilite, List <KeyValuePair <TuileZoo, Direction> > casesDisponibles, Direction d)
 {
     if (PeutSeDeplacer(possibilite))
     {
         casesDisponibles.Add(new KeyValuePair <TuileZoo, Direction>(possibilite, d));
     }
     return(casesDisponibles);
 }
Пример #4
0
        /// <summary>
        /// Création de l'animal, selon le type en paramètre. Un sexe est assigné au hasard
        /// </summary>
        /// <param name="position">La position où l'animal débutera</param>
        /// <param name="type">Le type de l'animal (enum, soit Licorne, Lion, Mouton ou Grizzly</param>
        /// <param name="enclos"></param>
        /// <param name="age">Enum, soit Bebe ou Adulte</param>
        public Animal(TuileZoo position, TypeAnimal type, Enclos enclos = null, AgeAnimal age = AgeAnimal.Adulte)
        {
            Type = type;
            switch (type)
            {
            case TypeAnimal.Grizzly:
                JoursGestation      = 220;
                JoursJusquaAdulte   = 220;
                JoursAvantNaissance = 220;
                MinutesPourNourrir  = 2;
                Prix              = PRIX_GRIZZLY;
                Zoo.Heros.Argent -= PRIX_GRIZZLY;
                Image             = TileSetGenerator.GetTile(TileSetGenerator.GRIZZLY);
                Enclos            = Zoo.ListeEnclos[3];
                break;

            case TypeAnimal.Lion:
                JoursGestation      = 110;
                JoursJusquaAdulte   = 110;
                JoursAvantNaissance = 110;
                MinutesPourNourrir  = 2;
                Prix              = PRIX_LION;
                Zoo.Heros.Argent -= PRIX_LION;
                Image             = TileSetGenerator.GetTile(TileSetGenerator.LION);
                Enclos            = Zoo.ListeEnclos[2];
                break;

            case TypeAnimal.Mouton:
                JoursGestation      = 150;
                JoursJusquaAdulte   = 150;
                JoursAvantNaissance = 150;
                MinutesPourNourrir  = 2;
                Prix              = PRIX_MOUTON;
                Zoo.Heros.Argent -= PRIX_MOUTON;
                Image             = TileSetGenerator.GetTile(TileSetGenerator.MOUTON);
                Enclos            = enclos;
                break;

            case TypeAnimal.Licorne:
                JoursGestation      = 360;
                JoursJusquaAdulte   = 360;
                JoursAvantNaissance = 360;
                MinutesPourNourrir  = 3;
                Prix              = PRIX_LICORNE;
                Zoo.Heros.Argent -= PRIX_LICORNE;
                Image             = TileSetGenerator.GetTile(TileSetGenerator.LICORNE);
                Enclos            = enclos;
                break;
            }
            DerniereFoisNourri = DateTime.Now;
            AFaim    = false;
            Age      = age;
            Enceinte = false;
            Sexe     = (SexeEntite)_r.Next(0, 2);
            Position = position;
            Zoo.ListeEntites.Add(this);
            Zoo.InstanceForm.AjusterLblAnimaux();
        }
Пример #5
0
        /// <summary>
        /// </summary>
        /// <param name="possibilite">Une case adjacente à l'animal</param>
        /// <returns>Si la case est libre ou non</returns>
        protected override bool PeutSeDeplacer(TuileZoo possibilite)
        {
            if (Zoo.ListeEntites.Where(e => (e is Humain || e is Dechet) && e.Position == possibilite).Count() > 0)
            {
                return(false);
            }

            return(possibilite.Tuile == TuileZoo.TypeTuile.Allee);
        }
Пример #6
0
        /// <summary>
        /// À partir de la liste de TuileZoos disponible, un random détermine la nouvelle position de l'humain et change son image en conséquent.
        /// </summary>
        internal void DeplacerEtModifierImage()
        {
            List <KeyValuePair <TuileZoo, Direction> > casesDisponibles = DeterminerCasesDisponibles();

            if (casesDisponibles.Count != 0)
            {
                var      caseDirection  = casesDisponibles[_r.Next(0, casesDisponibles.Count)];
                TuileZoo prochaineTuile = caseDirection.Key;
                Position = prochaineTuile;
                ModifierImage(caseDirection.Value);
            }
        }
Пример #7
0
        /// <summary>
        /// Crée une liste de cases où le concierge peut aller. Sa prochaine case est déterminée selon:
        /// Si elle contient un déchet;
        /// Sinon, un random est effectué sur la liste et le concierge prend la nouvelle position.
        /// La direction sert à donner une image au concierge.
        /// </summary>
        internal new void DeplacerEtModifierImage()
        {
            List <KeyValuePair <TuileZoo, Direction> > casesDisponibles = DeterminerCasesDisponibles();

            if (casesDisponibles.Count != 0)
            {
                KeyValuePair <TuileZoo, Direction> caseDirection = DeterminerProchaineTuileSelonDechetsProches(casesDisponibles);
                TuileZoo prochaineTuile = caseDirection.Key;
                Position = prochaineTuile;
                ModifierImage(caseDirection.Value);
            }
        }
Пример #8
0
        /// <summary>
        /// Le héros peut se déplacer dans l'allée et dans les enclos.
        /// </summary>
        /// <param name="possibilite">La case où le héros veut se déplacer</param>
        /// <returns>S'il peut se déplacer sur la case ou non</returns>
        protected override bool PeutSeDeplacer(TuileZoo possibilite)
        {
            if (Zoo.ListeEntites.Where(e => e.Position == possibilite).Count() > 0)
            {
                return(false);
            }

            return(possibilite.Tuile == TuileZoo.TypeTuile.Allee ||
                   possibilite.Tuile == TuileZoo.TypeTuile.Enclos ||
                   possibilite.Tuile == TuileZoo.TypeTuile.Gazon ||
                   possibilite.Tuile == TuileZoo.TypeTuile.Glace ||
                   possibilite.Tuile == TuileZoo.TypeTuile.Sable ||
                   possibilite.Tuile == TuileZoo.TypeTuile.Terre);
        }
Пример #9
0
 /// <summary>
 /// Les déchets ne se déplacent pas
 /// </summary>
 /// <param name="tuile"></param>
 /// <returns></returns>
 protected override bool PeutSeDeplacer(TuileZoo tuile)
 {
     return(false);
 }
Пример #10
0
 public Dechet(TuileZoo position)
 {
     Position = position;
     Image    = DeterminerImage();
     Zoo.ListeEntites.Add(this);
 }
Пример #11
0
 /// <summary>
 /// Les entités ne peuvent pas se déplacer sur le même type de tuile
 /// </summary>
 /// <param name="tuile">La tuile où l'entité veut se déplacer</param>
 /// <returns>True si l'entité peut s'y déplacer</returns>
 protected abstract bool PeutSeDeplacer(TuileZoo tuile);