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 ' '
|
|||
|
|
|
|||
|
|
|