add interface MazeBuilder and TextFileMazeBuilder

This commit is contained in:
4eker 2026-05-22 20:07:06 +03:00
parent fc40a296f9
commit a3e40fe0d5
4 changed files with 267 additions and 68 deletions

File diff suppressed because one or more lines are too long

View File

View File

@ -0,0 +1,12 @@
class Cell:
def __init__(self, x, y, isWall = False, isStart = False, isExit = False):
self.x = x
self.y = y
self.isWall = isWall
self.isStart = isStart
self.isExit = isExit
# Возращает True, если посаседству стена
def isPassable(self):
return not self.isWall

View File

@ -0,0 +1,26 @@
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