forked from UNN/2026-rff_mp
26 lines
832 B
Python
26 lines
832 B
Python
|
|
class Maze:
|
|||
|
|
def __init__(self, grid, start = None, exit = None):
|
|||
|
|
self.grid = grid
|
|||
|
|
self.start = start
|
|||
|
|
self.exit = exit
|
|||
|
|
self.height = len(grid)
|
|||
|
|
self.width = len(grid[0]) if grid else 0
|
|||
|
|
|
|||
|
|
# Создание новой ячейки
|
|||
|
|
def getCell(self, x, y):
|
|||
|
|
if 0 <= y < self.height and 0 <= x < self.width:
|
|||
|
|
return self.grid[x][y]
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
# Ищет соседние проходимые клетки
|
|||
|
|
def getNeighbors(self, cell):
|
|||
|
|
directions = [(0,1),(1,0),(0,-1),(-1,0)]
|
|||
|
|
result = []
|
|||
|
|
|
|||
|
|
for dx, dy in directions:
|
|||
|
|
nx, ny = cell.x + dx, cell.y + dy
|
|||
|
|
neighbor = self.getСell(nx, ny)
|
|||
|
|
if neighbor and neighbor.isPassable():
|
|||
|
|
result.append(neighbor)
|
|||
|
|
|
|||
|
|
return result
|