예제 #1
0
 /// <summary>
 /// Déplace les animaux dans le tableau 2d (Refresh sera call plus tard).
 /// </summary>
 private void DeplacerAnimaux()
 {
     foreach (Entite e in ListeEntites.OfType <Animal>())
     {
         (e as Animal).Deplacer();
     }
 }
예제 #2
0
        /// <summary>
        /// Affiche un message contenant les informations de l'entité cliquée, si la case contient une entité.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CliqueDroit(object sender, MouseEventArgs e)
        {
            FrmInfos infos = new FrmInfos();
            TuileZoo tuile = Terrain[e.X / 32, e.Y / 32];

            foreach (Entite entite in ListeEntites.Where(entite => entite.Position == tuile))
            {
                if (entite is Animal)
                {
                    Animal a = entite as Animal;
                    MontrerInformations(infos, a.Type.ToString(), a.Image, a.Sexe.ToString(),
                                        a.Age.ToString(), a.Enceinte ? "Enceinte" : "Pas enceinte",
                                        a.DerniereFoisNourri.AddMinutes(a.MinutesPourNourrir) > DateTime.Now ? "A mangé récemment" : "A faim depuis " + a.DerniereFoisNourri.ToShortTimeString());
                }
                else if (entite is Visiteur)
                {
                    Visiteur v = entite as Visiteur;
                    MontrerInformations(infos, v.Nom, v.Image, v.SexeVisiteur.ToString(),
                                        (DateTime.Now - v.QuandEntreZoo).ToString());
                }
                else if (entite is Concierge)
                {
                    Concierge c = entite as Concierge;
                    MontrerInformations(infos, c.GetType().ToString(), c.Image);
                }
                break;
            }
        }
예제 #3
0
 /// <summary>
 /// Déplace les concierges dans le tableau 2d (Refresh sera call plus tard).
 /// </summary>
 private void DeplacerConcierges()
 {
     foreach (Entite e in ListeEntites.OfType <Concierge>())
     {
         (e as Concierge).DeplacerEtModifierImage();
     }
 }
예제 #4
0
        /// <summary>
        /// Le clique gauche sur une tuile adjacente au Héros enlève les déchets
        /// </summary>
        /// <param name="tuile">La tuile cliquée</param>
        private void HerosRamasseDechet(TuileZoo tuile)
        {
            Dechet dechetEntite = null;

            foreach (Entite entite in ListeEntites.OfType <Dechet>().Where(e => e.Position == tuile))
            {
                dechetEntite = entite as Dechet;
            }

            ListeEntites.Remove(dechetEntite);
        }
예제 #5
0
 /// <summary>
 /// Nourrit un animal et il émet le son approprié. Si le temps pour nourrir l'animal est écoulé, ça coûtera 2$ au lieu de 1$.
 /// </summary>
 /// <param name="tuile"></param>
 private void NourrirAnimal(TuileZoo tuile)
 {
     if (Heros.AAssezDArgent(1))
     {
         foreach (Entite e in ListeEntites.OfType <Animal>().Where(e => e.Position == tuile))
         {
             Animal a = e as Animal;
             Heros.Argent        -= a.DerniereFoisNourri.AddMinutes(a.MinutesPourNourrir) > DateTime.Now ? 1 : 2;
             a.DerniereFoisNourri = DateTime.Now;
             a.EmettreSon();
         }
     }
 }
예제 #6
0
        /// <summary>
        /// Kick les visiteurs hors du Zoo si ça fait plus d'une minute qu'ils sont entrés et qu'ils sont sur la case de sortie.
        /// </summary>
        private void KickVisiteur()
        {
            Visiteur visiteurAEnlever = null;

            foreach (Entite e in ListeEntites.OfType <Visiteur>()
                     .Where(v => v.QuandEntreZoo.AddMinutes(1) <= DateTime.Now &&
                            v.Position == Terrain[26, 4]))
            {
                visiteurAEnlever = e as Visiteur;
                break;
            }

            ListeEntites.Remove(visiteurAEnlever);
        }
예제 #7
0
        /// <summary>
        /// Déplace les visiteurs dans le tableau 2d (Refresh sera call plus tard).
        /// </summary>
        /// <returns>Une liste de TuileZoo comprenant la position des nouveaux déchets</returns>
        private List <TuileZoo> DeplacerVisiteursEtCreerDechets()
        {
            List <TuileZoo> emplacementsDechet = new List <TuileZoo>();

            foreach (Entite e in ListeEntites.OfType <Visiteur>())
            {
                if (_r.Next(0, DECHET_SPAWN_RATE) == 0 && !e.Position.ContientDechet())
                {
                    emplacementsDechet.Add(e.Position);
                }
                (e as Visiteur).DeplacerEtModifierImage();
            }

            return(emplacementsDechet);
        }
예제 #8
0
        /// <summary>
        /// Enlève les déchets de la ListeEntite qui ont la même position qu'un concierge
        /// </summary>
        private void RamasserDechets()
        {
            List <Dechet> dechetsAEnlever = new List <Dechet>();

            foreach (Entite e in ListeEntites.OfType <Concierge>())
            {
                foreach (Entite f in ListeEntites.OfType <Dechet>().Where(f => f.Position == e.Position))
                {
                    dechetsAEnlever.Add(f as Dechet);
                }
            }

            foreach (Dechet d in dechetsAEnlever)
            {
                ListeEntites.Remove(d);
            }
        }
예제 #9
0
        internal static void ViellirEnfants()
        {
            foreach (Entite e in ListeEntites.OfType <Animal>().Where(a => a.Age == Animal.AgeAnimal.Bebe))
            {
                Animal a = e as Animal;
                switch (a.JoursJusquaAdulte)
                {
                case 0:
                    a.Age = Animal.AgeAnimal.Adulte;
                    break;

                default:
                    a.JoursJusquaAdulte--;
                    break;
                }
            }
        }
예제 #10
0
        /// <summary>
        /// Pour chaque animal enceinte, réduit le nombre de jours requis pour donner naissance de 1 ou si égal à 0, donne naissance.
        /// </summary>
        internal static void GestationnerAnimaux()
        {
            List <Animal> animauxDonnentNaissance = new List <Animal>();

            foreach (Entite e in ListeEntites.OfType <Animal>().Where(a => a.Enceinte))
            {
                Animal a = e as Animal;
                switch (a.JoursAvantNaissance)
                {
                case 0:
                    animauxDonnentNaissance.Add(a);
                    break;

                default:
                    a.JoursAvantNaissance--;
                    break;
                }
            }

            foreach (Animal a in animauxDonnentNaissance)
            {
                a.DonnerNaissance();
            }
        }
예제 #11
0
 /// <returns>True s'il y a plus d'animaux que de visiteurs, false sinon.</returns>
 private bool MoinsDeVisiteursQueDAnimaux()
 {
     return(ListeEntites.OfType <Animal>().Count() > ListeEntites.OfType <Visiteur>().Count());
 }