from queue import Queue from Engine.PathFinder import PathFinder class BfsPathFinder(PathFinder): def __init__(self, board): super().__init__(board) self.board = board self.goal = None def findBomb(self,start): frontier = Queue() frontier.put(start) cameFrom = dict() cameFrom[start] = None while not frontier.empty(): current = frontier.get() if self.checkGoal(current): return self.constructPath(cameFrom,start) for next in self.getNeighbour(current): if next not in cameFrom: frontier.put(next) cameFrom[next] = current return [] def constructPath(self,cameFrom,start): current = cameFrom[self.goal] path = [] path.append(self.goal) while current != start: path.append(current) current = cameFrom[current] path.append(start) path.reverse() return path def checkGoal(self, current): if current in self.board.bombMap: self.goal = current return True return False