123456789101112131415161718192021222324252627282930313233343536 |
- from .finder import Finder, TIME_LIMIT, MAX_RUNS
- from pathfinding.core.util import backtrace
- from pathfinding.core.diagonal_movement import DiagonalMovement
- class BreadthFirstFinder(Finder):
- def __init__(self, heuristic=None, weight=1,
- diagonal_movement=DiagonalMovement.never,
- time_limit=TIME_LIMIT,
- max_runs=MAX_RUNS):
- super(BreadthFirstFinder, self).__init__(
- heuristic=heuristic,
- weight=weight,
- weighted=False,
- diagonal_movement=diagonal_movement,
- time_limit=time_limit,
- max_runs=max_runs)
- if not diagonal_movement:
- self.diagonalMovement = DiagonalMovement.never
- def check_neighbors(self, start, end, grid, open_list):
- node = open_list.pop(0)
- node.closed = True
- if node == end:
- return backtrace(end)
- neighbors = self.find_neighbors(grid, node)
- for neighbor in neighbors:
- if neighbor.closed or neighbor.opened:
- continue
- open_list.append(neighbor)
- neighbor.opened = True
- neighbor.parent = node
|