コード例 #1
0
ファイル: FormSim.cs プロジェクト: DelalAktas/Projects-
        /// <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");
            }
        }
コード例 #2
0
ファイル: DijkstraTests.cs プロジェクト: DelalAktas/Projects-
        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);
        }
コード例 #3
0
        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);
        }