Files
obsidian-life/мусор.md
Aleksandr Ebaklakov 011626b8b7 Initial commit
2026-04-22 16:58:43 +03:00

177 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CRC карточки проекта DeliverySystem
<style>
table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
th, td { border: 1px solid #ddd; padding: 8px; }
th[colspan="2"] { background-color: #333; color: white; }
</style>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">GameEngine</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Управление игровым процессом и бизнес-логикой.<br>
2. Обработка команд игрока: движение по компасным направлениям.<br>
3. Взаимодействие с объектами в комнате (открытие, отпирание контейнеров).<br>
4. Связывание действий UI с изменениями состояния моделей.<br>
5. Оповещение слушателей об игровых событиях и изменениях состояния.
</td>
<td valign="top">
Player<br>
Room<br>
Direction<br>
Container<br>
Key<br>
Door
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">MapSerializer</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Сохранение графа комнат в JSON-файл.<br>
2. Загрузка графа из JSON-файла обратно в игровые объекты.<br>
3. Валидация связей между дверьми при загрузке.<br>
4. Конвертация игровых объектов в DTO и обратно.
</td>
<td valign="top">
Room<br>
Door<br>
Container<br>
Key<br>
DTO-модели (MapDTO, RoomDTO, DoorDTO, ItemDTO)
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">Player</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Хранение инвентаря (рюкзака) с предметами.<br>
2. Запоминание текущей комнаты.<br>
3. Добавление и удаление предметов из рюкзака.<br>
4. Поиск ключа по идентификатору в рюкзаке.
</td>
<td valign="top">
Room<br>
IItem<br>
Key
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">Room</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Хранение описания окружения.<br>
2. Хранение словаря дверей по направлениям.<br>
3. Хранение списка интерактивных объектов внутри комнаты.<br>
4. Формирование полного текстового описания комнаты для игрока.
</td>
<td valign="top">
Door<br>
Direction<br>
GameObject
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">Door</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Предоставление логического перехода в другую комнату.<br>
2. Блокировка прохода, если дверь заперта.<br>
3. Проверка переданного ключа на соответствие RequiredKeyId.<br>
4. Открывание и запирание замка по подходящему ключу.
</td>
<td valign="top">
Room<br>
Key<br>
ILockable
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">Container (Chest, Wardrobe)</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Хранение списка предметов IItem внутри себя.<br>
2. Поддержка внутреннего состояния: открыт / закрыт.<br>
3. Поддержка состояния замка: заперт / отперт.<br>
4. Разрешение открытия только при отсутствии замка или наличии верного ключа.<br>
5. Управление содержимым: добавление и извлечение предметов.
</td>
<td valign="top">
GameObject<br>
ILockable<br>
IItem<br>
Key
</td>
</tr>
</table>
<table>
<tr>
<th colspan="2" align="center" style="font-size: 1.2em;">Key</th>
</tr>
<tr>
<th width="50%">Обязанности</th>
<th width="50%">Взаимодействия</th>
</tr>
<tr>
<td valign="top">
1. Представление предмета, который можно поднять с пола.<br>
2. Хранение уникального идентификатора для отпирания замков.<br>
3. Предоставление идентификатора дверям и контейнерам для проверки.
</td>
<td valign="top">
GameObject<br>
IItem
</td>
</tr>
</table>