2026-rff_mp/shekurovaa/2/docs/data/main.py

33 lines
1.1 KiB
Python
Raw Normal View History

2026-05-20 17:55:28 +00:00
from builder import TextFileMazeBuilder
from strategies import BFSStrategy, DFSStrategy, AStarStrategy
from solver import MazeSolver
from observer import ConsoleView
from command import Player, MoveCommand
def main():
builder = TextFileMazeBuilder()
maze = builder.buildFromFile("mazes/small.txt")
console = ConsoleView()
console.update({"type": "message", "text": "Лабиринт загружен:"})
console.update({"type": "render", "maze": maze})
strategies = {
"BFS": BFSStrategy(),
"DFS": DFSStrategy(),
"A*": AStarStrategy()
}
for name, strat in strategies.items():
solver = MazeSolver(maze, strat)
stats = solver.solve()
print(f"{name}: time={stats.timeMs:.3f} ms, visited={stats.visitedCells}, path={stats.pathLength}")
console.update({"type": "render", "maze": maze, "path": stats.path})
player = Player(maze.start)
cmd = MoveCommand(maze, player, "D")
cmd.execute()
console.update({"type": "render", "maze": maze, "player": player.position})
if __name__ == "__main__":
main()