Esempio n. 1
0
        /// <summary>
        /// Permet d'appliquer la bonne strategie de comportement selon le fantome
        /// </summary>
        /// <param name="p_fantôme">Le fantome a appliquer le comportement</param>
        /// <param name="p_pacman">Le pacman</param>
        /// <returns>Le deplacement que le fantome doit prendre</returns>
        public Déplacement AppliquerComportement(Fantôme p_fantôme, PacMan p_pacman)
        {
            switch (p_fantôme.ObtenirComportement())
            {
            case TypeComportement.Blinky:
            {
                return(m_blinky.AppliquerInstinct(p_fantôme.Coordonnée,
                                                  p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré()));
            }

            case TypeComportement.Pinky:
            {
                return(m_pinky.AppliquerInstinct(p_fantôme.Coordonnée,
                                                 p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré()));
            }

            case TypeComportement.Inky:
            {
                return(m_inky.AppliquerInstinct(p_fantôme.Coordonnée,
                                                p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré()));
            }

            case TypeComportement.Clyde:
            {
                return(m_clyde.AppliquerInstinct(p_fantôme.Coordonnée,
                                                 p_pacman.Coordonnée, p_pacman.DéplacementActuel, p_fantôme.EstApeuré()));
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Fait partie du sequenceur d'animation, permet d'appliquer le comportement de chaque fantomes actifs
        /// </summary>
        internal void CalculerComportement()
        {
            VérifierGénérateurÉvénement();
            m_listeFantômesActifs.ForEach(f => f.Déplacer(m_ia.AppliquerComportement(f, Pacman)));

            m_fruitActif?.Déplacer(m_comportementFruit.AppliquerInstinct(m_fruitActif.Coordonnée, Pacman.Coordonnée,
                                                                         Pacman.DéplacementActuel, false));
        }