2026-rff_mp/romanovpv/task 2/docs/data/main.py
2026-05-24 22:18:38 +03:00

68 lines
1.5 KiB
Python

from builders import (TextFileMazeBuilder)
from strategies import (BFSStrategy, DFSStrategy, AStarStrategy)
from solver import (MazeSolver)
from observer_command import ConsoleView, Player, MoveCommand
import os
builder = TextFileMazeBuilder()
maze = builder.buildFromFile("maze.txt")
print("Лабиринт:\n")
maze.printMaze()
print("Выберете алгоритм")
print("1 - BFS")
print("2 - DFS")
print("3 - A*")
choice = input()
if choice == "1":
strategy = BFSStrategy()
elif choice == "2":
strategy = DFSStrategy()
elif choice == "3":
strategy = AStarStrategy()
else:
print("Неверный выбор")
exit()
solver = MazeSolver(maze, strategy)
view = ConsoleView()
solver.addObserver(view)
stats = solver.solve()
print("Результат:")
print(stats)
path, _ = strategy.findPath(
maze,
maze.start,
maze.exit
)
if not path:
print("\nПуть не найден")
exit()
print("\nНайденный путь:")
for cell in path:
print(f"({cell.x}, {cell.y})")
print("\nПошаговое движение игрока")
player = Player(maze.start)
history = []
passed_path = [maze.start]
view.render(maze, player, passed_path)
for cell in path[1:]:
input("\nEnter -> следующий шаг")
command = MoveCommand(player, cell)
command.execute()
history.append(command)
passed_path.append(cell)
os.system('cls' if os.name == 'nt' else 'clear')
view.render(maze, player, passed_path)