private void calcAdjacentNodes(DijkstraNode parent) { parent.Adjacents = new List <DijkstraNode>(); var above = Get(parent.X, parent.Y - 1); if (above != null) { parent.Adjacents.Add(above); } var below = Get(parent.X, parent.Y + 1); if (below != null) { parent.Adjacents.Add(below); } var left = Get(parent.X - 1, parent.Y); if (left != null) { parent.Adjacents.Add(left); } var right = Get(parent.X + 1, parent.Y); if (right != null) { parent.Adjacents.Add(right); } }
public DijkstraGraph(Map map) { this.map = map; Nodes = new Dictionary <string, DijkstraNode>(); for (var x = 0; x < this.map.GetWidth(); x++) { for (var y = 0; y < this.map.GetHeight(); y++) { var node = new DijkstraNode(x, y); node.Weight = this.map.GetCoordCost(x, y); if (node.Weight == 8) { node.Weight = int.MaxValue; } Nodes.Add(node.ToString(), node); } } foreach (var key in Nodes.Keys) { var node = Nodes[key]; if (!node.Selected) { calcAdjacentNodes(node); } } }
public DijkstraAlgorithm(int startX, int startY, int goalX, int goalY, string rawData) { P = new DijkstraNode(startX, startY); G = new DijkstraNode(goalX, goalY); graph = new DijkstraGraph(new Map(rawData)); }