58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
|
|
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())
|