private void TracePath(Node start, Node end) { List<Node> path = new List<Node>(); Node current = end; while (current.GridBlock.Equals(start.GridBlock)) { path.Add(current); current = current.Parent; } path.Reverse(); grid.Path = path; }
public void Create() { int posX = 0; int posY = 0; gridNodes = new Node[gridSizeX, gridSizeY]; for (int i = 0; i < gridSizeX; i++) { for (int j = 0; j < gridSizeY; j++) { GridBlock block = new GridBlock(new Point(posX, posY), GridBlock.BlockType.Way); if (i == 0 && j == 0) block.Type = GridBlock.BlockType.Start; else if (j == 14 && i == 14) block.Type = GridBlock.BlockType.End; gridNodes[i, j] = new Node(i, j, block); posX += 20; } posX = 0; posY += 20; } this.start = gridNodes[0, 0]; this.end = gridNodes[14, 14]; }
private int GetDistance(Node a, Node b) { int distX = Math.Abs(a.GridBlock.Position.X - b.GridBlock.Position.X); int distY = Math.Abs(a.GridBlock.Position.Y - b.GridBlock.Position.Y); return distX + distY; }
public List<Node> GetNeighbours(Node start) { List<Node> neighbours = new List<Node>(); return neighbours; }