33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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() |