from strategy import PathFindingStrategy from Maze import Maze, Cell class BFSStrategy(PathFindingStrategy): def findPath(maze: Maze, start: Cell, exit: Cell): if not start or not exit: return [] # очерель: перывй вошел - первый вышел queue = [start] # будем хранить откуда в какую клетку пришли parents = {start: None} while (len(queue) != 0): u = queue.pop(0) if u == exit: path = [] current = exit while current is not None: path.append(current) current = parents[current] path.reverse() return path, len(parents) childs = maze.getNeighbors(u) for child in childs: if child not in parents: parents[child] = u queue.append(child) return []