/// <summary> /// This method would pick the most optimal path, out of a list of possible paths. /// It also creates the list of possible paths. /// </summary> /// private void OptimumPath() { NewDijkstra nDijkstra = new NewDijkstra(grid);; for (int i = 0; i < Check_In.Count; i++) { Optimum_Paths.Add(nDijkstra.FindPath(Check_In[i], Check_Out[i])); foreach (var GG in Optimum_Paths[i]) { if (GG.Type == Node.NodeType.free) { grid[GG.Position.X, GG.Position.Y].Type = Node.NodeType.path; } if (GG.Type == Node.NodeType.start || GG.Type == Node.NodeType.end) { } } //OG code goes here //create thread Thread threadPath = new Thread(loopPath); threadPath.Start(i); threads.Add(threadPath); Thread.Sleep(500); //OG code ends here //Path_Options.Add } if (!(Optimum_Paths.Contains(null))) { foreach (List <Node> paths in this.Optimum_Paths) { foreach (var GG in paths) { if (GG.Type == Node.NodeType.free) { grid[GG.Position.X, GG.Position.Y].Type = Node.NodeType.path; } } Node tempNodeStart = paths[0]; Node tempNodeEnd = paths[paths.Count - 1]; paths[0] = tempNodeEnd; paths[paths.Count - 1] = tempNodeStart; paths.Reverse(); } for (int i = 0; i < Optimum_Paths.Count; i++) { List <Mover> tempMovers = new List <Mover>(); movers.Add(tempMovers); } pictureBox1.Invalidate(); } else { btnReset.Enabled = true; MessageBox.Show("Please dont block the way"); } }
public void FindPath_GetListOfAdjacentNodes_ReturnsListOfNodes() { //Coordinate coord = new Coordinate(0, 4); //int a, b Node node_A = new Node(new Coordinate(0, 4), Node.NodeType.start); Node[,] grid = new Node[33, 19]; NewDijkstra dijkstra = new NewDijkstra(grid); List <Node> expected = new List <Node>(); expected.Add(grid[1, 4] /*(new Coordinate(1, 4), Node.NodeType.free)*/); expected.Add(grid[0, 3] /*(new Coordinate(0, 3), Node.NodeType.free)*/); expected.Add(grid[0, 5] /*(new Coordinate(0, 5), Node.NodeType.free)*/); List <Node> listAdjecentNode = dijkstra.GetAdjacentNodes(node_A); CollectionAssert.AreEquivalent(expected, listAdjecentNode); }
public void FindaPath_GetListOfAdjecentNodesOfSpecifiedNode_ReturnListOfNodes() { //Arrange initialze objects Node node_A = new Node(new Coordinate(0, 4), Node.NodeType.start); Node[,] grid = new Node[33, 19]; NewDijkstra dijkstra = new NewDijkstra(grid); List <Node> expected = new List <Node>(); //Act expected.Add(grid[1, 4] /*(new Coordinate(1, 4), Node.NodeType.free)*/); expected.Add(grid[0, 3] /*(new Coordinate(0, 3), Node.NodeType.free)*/); expected.Add(grid[0, 5] /*(new Coordinate(0, 5), Node.NodeType.free)*/); List <Node> listAdjecentNode = dijkstra.GetAdjacentNodes(node_A); //Assert CollectionAssert.AreEquivalent(expected, listAdjecentNode); }