/// <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(); } }
/// <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)); }