2026-05-20 10:05:52 +00:00
|
|
|
|
class Cell:
|
2026-05-20 18:42:45 +00:00
|
|
|
|
"""
|
|
|
|
|
|
Клетка лабиринта
|
2026-05-20 10:05:52 +00:00
|
|
|
|
|
2026-05-20 18:42:45 +00:00
|
|
|
|
`x, y` - координаты клетки в лабиринте
|
|
|
|
|
|
|
|
|
|
|
|
`isWall` - Является ли клетка стеной
|
|
|
|
|
|
|
|
|
|
|
|
`isStart` - Является ли клетка стартом
|
|
|
|
|
|
|
|
|
|
|
|
`isExit` - Является ли клетка выходом лабиринта
|
|
|
|
|
|
|
|
|
|
|
|
`value` - Вес клетки
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, x: int, y: int, isWall=False, isStart=False, isExit=False, value=1):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Создание клетки лабиринта
|
|
|
|
|
|
|
2026-05-21 20:31:17 +00:00
|
|
|
|
`x` - столбец клетки в лабиринте
|
|
|
|
|
|
`y` - строка клетки в лабиринте
|
2026-05-20 18:42:45 +00:00
|
|
|
|
|
|
|
|
|
|
`isWall` - Является ли клетка стеной
|
|
|
|
|
|
|
|
|
|
|
|
`isStart` - Является ли клетка стартом
|
|
|
|
|
|
|
|
|
|
|
|
`isExit` - Является ли клетка выходом лабиринта
|
|
|
|
|
|
|
|
|
|
|
|
`value` - Вес клетки
|
|
|
|
|
|
"""
|
2026-05-20 10:05:52 +00:00
|
|
|
|
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
|
2026-05-20 10:05:52 +00:00
|
|
|
|
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
|
|
|
|
|
|
|
2026-05-23 13:47:29 +00:00
|
|
|
|
def toStr(self) -> str:
|
2026-05-20 18:42:45 +00:00
|
|
|
|
"""
|
|
|
|
|
|
Возвращает строчкое представление клетки
|
|
|
|
|
|
|
|
|
|
|
|
`#` - Стена
|
|
|
|
|
|
|
|
|
|
|
|
`S` - Начало лабиринта
|
|
|
|
|
|
|
|
|
|
|
|
`E` - Конец лабиринта
|
|
|
|
|
|
|
|
|
|
|
|
` `(пробел) - свободный проход
|
|
|
|
|
|
|
|
|
|
|
|
`<int>` - Вес клетки
|
|
|
|
|
|
"""
|
2026-05-20 10:05:52 +00:00
|
|
|
|
if self.isWall:
|
|
|
|
|
|
return '#'
|
|
|
|
|
|
elif self.isStart:
|
|
|
|
|
|
return 'S'
|
|
|
|
|
|
elif self.isExit:
|
|
|
|
|
|
return 'E'
|
|
|
|
|
|
else:
|
2026-05-20 18:42:45 +00:00
|
|
|
|
return ' '
|
|
|
|
|
|
|
2026-05-20 20:07:51 +00:00
|
|
|
|
|