2026-rff_mp/stepushovgs/labyrinth/source/classes/cell.py

86 lines
2.4 KiB
Python
Raw Normal View History

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
2026-05-20 20:07:51 +00:00
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
2026-05-20 20:07:51 +00:00
@property
def value(self) -> int:
"""Возвращает вес клетки"""
return self.__value
def toStr(self):
"""
Возвращает строчкое представление клетки
`#` - Стена
`S` - Начало лабиринта
`E` - Конец лабиринта
` `(пробел) - свободный проход
`<int>` - Вес клетки
"""
if self.isWall:
return '#'
elif self.isStart:
return 'S'
elif self.isExit:
return 'E'
else:
return ' '
2026-05-20 20:07:51 +00:00