86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
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` - Конец лабиринта
|
||
|
||
` `(пробел) - свободный проход
|
||
|
||
`<int>` - Вес клетки
|
||
"""
|
||
if self.isWall:
|
||
return '#'
|
||
elif self.isStart:
|
||
return 'S'
|
||
elif self.isExit:
|
||
return 'E'
|
||
else:
|
||
return ' '
|
||
|
||
|