import time
from source.strategy.strategy import SearchStats, PathFindingStrategy
from source.bububu.observer import Observer, Event
from source.classes.maze import Maze
class MazeSolver:
def __init__(self, maze: Maze, strategy: PathFindingStrategy, observer: Observer):
self.maze = maze
self.strategy = strategy
self.observer = observer
def strategyName(self):
return self.strategy.name
def setStrategy(self, strategy: PathFindingStrategy):
def solve(self):
start_time = time.perf_counter()
path, visited_cells = self.strategy.findPath(self.maze)
finish_time = time.perf_counter()
self.observer.update(Event(
event="path_found",
player_position=self.maze.exit,
path=path
))
return SearchStats(
timeMs=finish_time - start_time,
visitedCells=visited_cells,
pathLength=len(path)
)
class SearchStats:
"""Общая информация о тесте алгоритма"""
def __init__(self, timeMs: float, visitedCells: int, pathLength: int):
self.timeMs = timeMs
self.visitedCells = visitedCells
self.pathLength = pathLength