public List <string> CreateSaveText() { saveText.Add(elementsBounds.GamePlaneBounds.ToString() + " is GamePlaneBounds"); saveText.Add(saveSystemBoundary.FindStartPlaceForPathFinding().Index + "is StartPlaceForPathFinding"); saveText.Add(saveSystemBoundary.FindDestinationPlaceForPathFinding().Index + "is DestinationPlaceForPathFinding"); saveText.Add(planeBuilder.IntagerNumberOfMazeElementsOnXAndY.ToString() + " is IntagerNumberOfElementsOnXAndY"); for (int i = 0; i < planeBuilder.IntagerNumberOfMazeElementsOnXAndY.x; i++) { for (int j = 0; j < planeBuilder.IntagerNumberOfMazeElementsOnXAndY.y; j++) { if (planeBuilder.GetFromMazeArray(i, j).IsMazeWall) { string mazeElementIndex = planeBuilder.GetFromMazeArray(i, j).Index.ToString(); saveText.Add(mazeElementIndex + " is maze wall element"); } } } return(saveText); }
public virtual IPathFindAlgo CreatePathFindAlgo( EPathFindAlgorithms ePathFindAlgorithm, IMazeSpecialElementsSeeker pathFindAlgoBoundary, List <IMazeElement> pathFromStartToEnd, IPlaneBuilder planeBuilder, List <IMazeElement> unexploredMazeElementsList, List <IMazeElement> openList, List <IMazeElement> closeList, IPathFindProcessMetric pathFindProcessMetric) { PathFindAlgo pathFindAlgo = null; switch (ePathFindAlgorithm) { case EPathFindAlgorithms.DijkstraAlgorithm: pathFindAlgo = new PathFindAlgo( pathFindAlgoBoundary, pathFromStartToEnd, new DijkstraPathFinder( planeBuilder, new UnexploredMazeElements( planeBuilder, unexploredMazeElementsList), pathFindAlgoBoundary.FindStartPlaceForPathFinding(), pathFindAlgoBoundary.FindDestinationPlaceForPathFinding(), pathFindProcessMetric), new MazeRestarter( planeBuilder)); break; case EPathFindAlgorithms.EuclideanAStar: pathFindAlgo = new PathFindAlgo( pathFindAlgoBoundary, pathFromStartToEnd, new AStarPathFinder( pathFindAlgoBoundary.FindStartPlaceForPathFinding(), pathFindAlgoBoundary.FindDestinationPlaceForPathFinding(), new OpenCloseListController( openList, closeList), new NeighboursPathFindParametersProcessor( planeBuilder, pathFindAlgoBoundary.FindDestinationPlaceForPathFinding(), new AStarEuclideanDistanceHeuristic()), pathFindProcessMetric), new MazeRestarter( planeBuilder)); break; case EPathFindAlgorithms.ManhattanAStar: pathFindAlgo = new PathFindAlgo( pathFindAlgoBoundary, pathFromStartToEnd, new AStarPathFinder( pathFindAlgoBoundary.FindStartPlaceForPathFinding(), pathFindAlgoBoundary.FindDestinationPlaceForPathFinding(), new OpenCloseListController( openList, closeList), new NeighboursPathFindParametersProcessor( planeBuilder, pathFindAlgoBoundary.FindDestinationPlaceForPathFinding(), new AStarManhattanDistanceHeuristic()), pathFindProcessMetric), new MazeRestarter( planeBuilder)); break; } return(pathFindAlgo); }
public void AppointPath() { mazeElementsPathFindParametersRestarter.RestartMazeElementsParameters(); pathFromStartToEnd = FindPath(); PathDrawer.DrawPathFromStartToEnd(pathFindAlgoBoundary.FindDestinationPlaceForPathFinding()); }