class Cell: """ Клетка лабиринта `x, y` - координаты клетки в лабиринте `isWall` - Является ли клетка стеной `isStart` - Является ли клетка стартом `isExit` - Является ли клетка выходом лабиринта `value` - Вес клетки """ def __init__(self, x: int, y: int, isWall=False, isStart=False, isExit=False, value=1): """ Создание клетки лабиринта `x` - столбец клетки в лабиринте `y` - строка клетки в лабиринте `isWall` - Является ли клетка стеной `isStart` - Является ли клетка стартом `isExit` - Является ли клетка выходом лабиринта `value` - Вес клетки """ self.__x = x self.__y = y self.isWall = isWall self.isStart = isStart self.isExit = isExit self.__value = value pass @property def isPassable(self) -> bool: """возвращает `True` для прохода, если клетка не стена""" return not self.isWall @property def x(self) -> int: """Возвращает координату клетки по оси X""" return self.__x @property def y(self) -> int: """Возвращает координату клетки по оси Y""" return self.__y def getXY(self) -> tuple[int, int]: """Возвращает кортеж координат в формате `(x, y)`""" return self.__x, self.__y @property def value(self) -> int: """Возвращает вес клетки""" return self.__value def toStr(self) -> str: """ Возвращает строчкое представление клетки `#` - Стена `S` - Начало лабиринта `E` - Конец лабиринта ` `(пробел) - свободный проход `` - Вес клетки """ if self.isWall: return '#' elif self.isStart: return 'S' elif self.isExit: return 'E' else: return ' '