From c096613e08a87d6822a9ed95dc0ed8f35738d966 Mon Sep 17 00:00:00 2001 From: SerKin0 <71343548+SerKin0@users.noreply.github.com> Date: Fri, 22 May 2026 00:05:59 +0300 Subject: [PATCH] =?UTF-8?q?[2]=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20docstring=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=BE=D0=B2=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B5=20?= =?UTF-8?q?`models/base.py`=20=D0=B8=20=D0=BF=D1=83=D1=82=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skorohodovsa/task_2/docs/source/api.md | 4 +- skorohodovsa/task_2/models/base.py | 67 ++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/skorohodovsa/task_2/docs/source/api.md b/skorohodovsa/task_2/docs/source/api.md index f3eb868..84f80d7 100644 --- a/skorohodovsa/task_2/docs/source/api.md +++ b/skorohodovsa/task_2/docs/source/api.md @@ -1,9 +1,9 @@ # API Reference -## Модуль `models.map` +## Модуль `models.base` ```{eval-rst} -.. automodule:: models.map +.. automodule:: models.base :members: :undoc-members: :show-inheritance: \ No newline at end of file diff --git a/skorohodovsa/task_2/models/base.py b/skorohodovsa/task_2/models/base.py index e0992c5..f70972f 100644 --- a/skorohodovsa/task_2/models/base.py +++ b/skorohodovsa/task_2/models/base.py @@ -38,6 +38,39 @@ class Cell: """ return not self.is_wall + @property + def is_wall(self): + return self._is_wall + + @property + def is_start(self): + return self._is_start + + @property + def is_exit(self): + return self._is_exit + + def _clear_flags(self) -> None: + """Обнуляет все флаги поля""" + self._is_start = False + self._is_exit = False + self._is_wall = False + + @is_wall.setter + def is_wall(self, value: bool) -> None: + self._clear_flags() + self._is_wall = True + + @is_start.setter + def is_start(self, value: bool) -> None: + self._clear_flags() + self._is_start = True + + @is_exit.setter + def is_exit(self, value: bool) -> None: + self._clear_flags() + self._is_exit = True + def __str__(self) -> str: if self._is_wall: type_cell = "Стена" @@ -66,14 +99,48 @@ class Maze: ] def _check_point_in_map(self, x: int, y: int) -> bool: + """Проверка нахождения точки в границах поля + + Args: + x (int): Координата точки в оси X + y (int): Координата точки в оси Y + + Returns: + bool: True если поля в поле, иначе False + """ return (0 <= x < self._width) and (0 <= y < self._height) def get_cell(self, x: int, y: int) -> Optional[Cell]: + """Получение значения поля по координате в лабиринте + + Args: + x (int): Координата точки в оси X + y (int): Координата точки в оси Y + + Returns: + Optional[Cell]: Объект поля, при его наличии + """ if not self._check_point_in_map(x, y): return None return self._map[y][x] def get_neighbors(self, x: int, y: int) -> Optional[list[Cell]]: + """Получение соседних полей относительно заданного поля + + Под соседями поля в лабиринте имеется виду клетки сверху, справа, + снизу и слева относительно её. Если точка находится за границами, + то будет возвращено `None` + + Args: + x (int): Координата точки в оси X + y (int): Координата точки в оси Y + + Returns: + Optional[list[Cell]]: Список соседних полей + """ + if not self._check_point_in_map(x, y): + return None + list() vector_x = [0, 1, 0, -1] vector_y = [1, 0, -1, 0]