示例#1
0
        public Coordonnees CaseSuivante(PersonnageMobilisable perso)
        {
            if (perso == null)
            {
                throw new NullReferenceException("Impossible de chercher le chemin pour un personnage null !");
            }
            if (perso.ZoneActuelle == null)
            {
                throw new NullReferenceException("Le personnage n'est assigné à aucune zone !");
            }
            var objets = RecupererListeObjets(perso.ZoneActuelle);

            if (objets.Count == 0)
            {
                return(null);
            }
            var chemins = RecupererChemins(perso.ZoneActuelle.Simulation.Tableau, perso.Case, objets);
            var item    = ChoisirLeCheminLePlusCourt(chemins);

            if (chemins[item].Count == 0)
            {
                return(null);
            }
            Node <Case> node = chemins[item][0] as Node <Case>;

            if (node == null)
            {
                throw new InvalidCastException("La node n'est pas au bon format ! (Node<Case>)");
            }
            if (TestEgaliteObjet(objets[item], node.Coor))
            {
                return(null);
            }
            Console.WriteLine("Case Obtenue: " + node.Coor);
            return(node.Coor);
        }
 public abstract void ModifieEtat(PersonnageMobilisable p);
 public void DeAttacherPersonnage(PersonnageMobilisable observer)
 {
     PersonnagesMobilises.Remove(observer);
 }
 public void AttacherPersonnage(PersonnageMobilisable observer)
 {
     PersonnagesMobilises.Add(observer);
 }
 public void SetPersonnage(PersonnageMobilisable personnageMobilisable)
 {
     Personnage = personnageMobilisable;
 }
 protected PersonnageBehavior(PersonnageMobilisable perso)
 {
     Personnage = perso;
     Update();
 }