コード例 #1
0
        List <GraphPoint> ReconstructPath(SquareGrid grid, AStarSearch astar)
        {
            //in reverse way -> end = start
            GraphPoint end = astar.cameFrom.Where(x => x.Key.wType == GraphPoint.WType.start).First().Key;
            var        tr  = astar.cameFrom.Where(x => x.Key.wType == GraphPoint.WType.end);

            if (tr.Any())
            {
                GraphPoint        cur  = tr.First().Key;
                List <GraphPoint> path = new List <GraphPoint>();
                while (!cur.Equals(end))
                {
                    GraphPoint ptr = cur;
                    if (!astar.cameFrom.TryGetValue(cur, out ptr))
                    {
                        ptr = cur;
                    }
                    path.Add(cur);
                    cur = ptr;
                }
                return(path);
            }
            else
            {
                DialogResult result = System.Windows.Forms.MessageBox.Show(Application.OpenForms[0], "Лабіринт не має розв'язку", "Помилка", MessageBoxButtons.YesNo);
            }
            return(null);
        }