Exemplo n.º 1
0
 public PathFindAlgo(IMazeSpecialElementsSeeker _pathFindAlgoBoundary, List <IMazeElement> _pathFromStartToEnd, IPathFinder _pathFinder, IMazeElementsPathFindParametersRestarter _mazeElementsPathFindParametersRestarter)
 {
     pathFindAlgoBoundary = _pathFindAlgoBoundary;
     pathFromStartToEnd   = _pathFromStartToEnd;
     pathFinder           = _pathFinder;
     mazeElementsPathFindParametersRestarter = _mazeElementsPathFindParametersRestarter;
 }
 public MazeSaveTextCreator(IPlaneBuilder _planeBuilder, IPlaneElementsBounds _elementsBounds, List <string> _saveText, IMazeSpecialElementsSeeker _saveSystemBoundary)
 {
     planeBuilder       = _planeBuilder;
     elementsBounds     = _elementsBounds;
     saveText           = _saveText;
     saveSystemBoundary = _saveSystemBoundary;
 }
Exemplo n.º 3
0
    public ISaveSystem CreateSaveSystemForMazeSaving(
        string defaultSaveFolderPath,
        PlaneBoundry planeBuilder,
        string mazeSaveFolderPath,
        IMazeSpecialElementsSeeker mazeSpecialElementsSeeker)
    {
        ISaveSystem saveSystem;

        saveSystem = new SaveSystem(
            new FolderPath(
                mazeSaveFolderPath,
                defaultSaveFolderPath,
                new PathValidator()),
            new MazeSaveTextCreator(
                planeBuilder,
                planeBuilder,
                new List <string>(),
                mazeSpecialElementsSeeker),
            new List <string>(),
            new StreamWriter(mazeSaveFolderPath, false));

        return(saveSystem);
    }
    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);
    }