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); }