from src.maze_builder import TextFileMazeBuilder from src.pathfinding import BFSStrategy, DFSStrategy, AStarStrategy, DijkstraStrategy from src.maze_solver import MazeSolver # Загружаем лабиринт builder = TextFileMazeBuilder() maze = builder.build_from_file("demo_maze.txt") print("Лабиринт:") print(maze) print(f"\nСтарт: ({maze.start.x}, {maze.start.y})") print(f"Выход: ({maze.exit.x}, {maze.exit.y})") # Создаём solver без стратегии solver = MazeSolver(maze) # Тест 1: BFS print(f"\n{'='*50}") print("ТЕСТ 1: BFS") solver.set_strategy(BFSStrategy()) stats = solver.solve("demo_maze") print(f"Время: {stats.time_ms:.4f} мс") print(f"Посещено: {stats.visited_cells}") print(f"Длина пути: {stats.path_length}") # Тест 2: DFS print(f"\n{'='*50}") print("ТЕСТ 2: DFS") solver.set_strategy(DFSStrategy()) stats = solver.solve("demo_maze") print(f"Время: {stats.time_ms:.4f} мс") print(f"Посещено: {stats.visited_cells}") print(f"Длина пути: {stats.path_length}") # Тест 3: A* print(f"\n{'='*50}") print("ТЕСТ 3: A*") solver.set_strategy(AStarStrategy()) stats = solver.solve("demo_maze") print(f"Время: {stats.time_ms:.4f} мс") print(f"Посещено: {stats.visited_cells}") print(f"Длина пути: {stats.path_length}") # Тест 4: Дейкстра print(f"\n{'='*50}") print("ТЕСТ 4: Дейкстра") solver.set_strategy(DijkstraStrategy()) stats = solver.solve("demo_maze") print(f"Время: {stats.time_ms:.4f} мс") print(f"Посещено: {stats.visited_cells}") print(f"Длина пути: {stats.path_length}") # Тест 5: Динамическая смена алгоритма print(f"\n{'='*50}") print("ТЕСТ 5: Смена алгоритма на лету") print("Было:", solver.strategy.get_name()) solver.set_strategy(BFSStrategy()) print("Стало:", solver.strategy.get_name())