from models.cell import Cell class Maze: def __init__(self, cells, start_cell, exit_cell): self.cells = cells self.height = len(cells) self.width = len(cells[0]) self.start_cell = start_cell self.exit_cell = exit_cell def get_cell(self, x, y): if 0 <= x < self.width and 0 <= y < self.height: return self.cells[y][x] return None def check_cell(self, x, y): cell = self.get_cell(x, y) return cell and cell.is_passable() def get_neighbors(self, cell: Cell): directions = [ (0, -1), (0, 1), (-1, 0), (1, 0) ] neighbors = [] for dx, dy in directions: x = cell.x + dx y = cell.y + dy if self.check_cell(x, y): neighbors.append(self.get_cell(x, y)) return neighbors def __repr__(self): return f"Maze({self.width}x{self.height})"