Exemplo n.º 1
0
        public void ProcessData(Controllers.HomeController.GData d)
        {
            TargetNode = Nodes[d.target.x, d.target.y];
            foreach (var p in d.blob)
            {
                Blob.Add(Nodes[p.x, p.y]);
            }
            foreach (var p in d.blocked)
            {
                ToggleBlocked(p.x, p.y);
            }
            StringBuilder sb = new StringBuilder("Grid Setup Is: \n" +
                                                 "Target: " + TargetNode.CoordX + ", " + TargetNode.CoordY + " \n");

            sb.Append("Blob: ");
            foreach (var p in Blob)
            {
                sb.Append(p.CoordX + ", " + p.CoordY + " - ");
            }
            sb.Append("\nBlocked: ");
            foreach (var p in d.blocked)
            {
                sb.Append(p.x + ", " + p.y + " - ");
            }
            Debug.WriteLine(sb.ToString());
            Debug.WriteLine("Begining PathFind");
        }
Exemplo n.º 2
0
        public List <GridSquare> FindPath(Controllers.HomeController.GData d)
        {
            ProcessData(d);
            GridSquare        next;
            List <GridSquare> path = new List <GridSquare>();
            List <GridSquare> neighbors;

            Debug.WriteLine("Target is: " + TargetNode.CoordX + ", " + TargetNode.CoordY);
            GridSquare current = Nodes[TargetNode.CoordX, TargetNode.CoordY];

            while (!IsInBlob(current))
            {
                neighbors = current.VisitNeighbors(Width, Height, this);
                ProcessNeighbors(neighbors, current);
                next = Open.Dequeue();
                Closed.Add(Nodes[current.CoordX, current.CoordY]);
                current = Nodes[next.CoordX, next.CoordY];
            }
            path = BacktrackFrom(current);
            return(path);
        }