예제 #1
0
        public void LinkObject(Coordonnees coor, SujetObserveAbstrait obj, Grille grille)
        {
            if (coor == null)
            {
                return;
            }
            if (!coor.EstValide())
            {
                return;
            }
            if (grille == null)
            {
                return;
            }
            if (TestNullObject(obj))
            {
                return;
            }
            var node = GetNode(coor, grille);

            if (node == null)
            {
                Console.WriteLine("LinkCaseToZone: Impossible de récupérer une node viable en " + coor);
                return;
            }
            AttachObjectToCase(node, obj);
            AttachCaseToObject(node, obj);
        }
예제 #2
0
        protected override bool TestValidNode(Coordonnees coor)
        {
            if (coor == null)
            {
                throw new NullReferenceException("Les coordonnées de la node à valider sont nulles !");
            }
            if (!coor.EstValide())
            {
                throw new InvalidOperationException("Les coordonnées renseignées ne sont pas valides");
            }
//            var node = (Node<Case>)tableau[i, j];
            var            node = (Node <Case>)Tableau.ElementAt(coor);
            CaseAgeOfKebab c    = (CaseAgeOfKebab)node.Value;

//            CaseAgeOfKebab c = node.Value as CaseAgeOfKebab;
            if (c == null)
            {
                throw new NullReferenceException("Le type de case ne correspond pas !!");
            }
            if (!c.Walkable)
            {
                //Console.WriteLine("Cette case n'est pas Walkable ! " + node.Coor);
                return(false); // la case n'est pas valide si elle n'est pas Walkable !
            }
            return(true);
        }
예제 #3
0
 public object ElementAt(Coordonnees coor)
 {
     if (!coor.EstValide())
     {
         return(null);
     }
     return(this[coor.X, coor.Y]);
 }
예제 #4
0
 public ArrayList Route(Coordonnees paris, Coordonnees marseille)
 {
     if (!paris.EstValide())
     {
         throw new InvalidOperationException("Route: Les coordonnées choisies sont invalides !");
     }
     if (!marseille.EstValide())
     {
         throw new InvalidOperationException("Route: Les coordonnées choisies sont invalides !");
     }
     computePaths((Node <T>) this[paris.X, paris.Y], (Node <T>) this[marseille.X, marseille.Y]);
     return(getShortestPathTo((Vertex)this[marseille.X, marseille.Y]));
 }
예제 #5
0
 public void LinkObject(Coordonnees coor, SujetObserveAbstrait obj, Grille grille)
 {
     if (coor == null) return;
     if (!coor.EstValide()) return;
     if(grille == null) return;
     if (TestNullObject(obj)) return;
     var node = GetNode(coor,grille);
     if (node == null)
     {
         Console.WriteLine("LinkCaseToZone: Impossible de récupérer une node viable en " + coor);
         return;
     }
     AttachObjectToCase(node, obj);
     AttachCaseToObject(node, obj);
 }
예제 #6
0
        public List <Coordonnees> FindAjacentOfZone(Coordonnees coor, ZoneFinale zone)
        {
            List <Coordonnees> list = new List <Coordonnees>();

            if (zone == null)
            {
                return(list);
            }
            if (coor == null || !coor.EstValide())
            {
                return(list);
            }

            foreach (var adj in Coordonnees.ObtenirCasesAdjacentes(coor))
            {
                if (zone.ContientCoordonnees(adj))
                {
                    list.Add(adj);
                }
            }
            return(list);
        }
예제 #7
0
        public List<Coordonnees> FindAjacentOfZone(Coordonnees coor, ZoneFinale zone)
        {
            List<Coordonnees> list = new List<Coordonnees>();
            if (zone == null) return list;
            if (coor == null || !coor.EstValide()) return list;

            foreach (var adj in Coordonnees.ObtenirCasesAdjacentes(coor))
            {
                if(zone.ContientCoordonnees(adj)) list.Add(adj);
            }
            return list;
        }