6.4 KiB
6.4 KiB
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>| GameEngine | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Управление игровым процессом и бизнес-логикой. 2. Обработка команд игрока: движение по компасным направлениям. 3. Взаимодействие с объектами в комнате (открытие, отпирание контейнеров). 4. Связывание действий UI с изменениями состояния моделей. 5. Оповещение слушателей об игровых событиях и изменениях состояния. |
Player Room Direction Container Key Door |
| MapSerializer | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Сохранение графа комнат в JSON-файл. 2. Загрузка графа из JSON-файла обратно в игровые объекты. 3. Валидация связей между дверьми при загрузке. 4. Конвертация игровых объектов в DTO и обратно. |
Room Door Container Key DTO-модели (MapDTO, RoomDTO, DoorDTO, ItemDTO) |
| Player | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Хранение инвентаря (рюкзака) с предметами. 2. Запоминание текущей комнаты. 3. Добавление и удаление предметов из рюкзака. 4. Поиск ключа по идентификатору в рюкзаке. |
Room IItem Key |
| Room | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Хранение описания окружения. 2. Хранение словаря дверей по направлениям. 3. Хранение списка интерактивных объектов внутри комнаты. 4. Формирование полного текстового описания комнаты для игрока. |
Door Direction GameObject |
| Door | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Предоставление логического перехода в другую комнату. 2. Блокировка прохода, если дверь заперта. 3. Проверка переданного ключа на соответствие RequiredKeyId. 4. Открывание и запирание замка по подходящему ключу. |
Room Key ILockable |
| Container (Chest, Wardrobe) | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Хранение списка предметов IItem внутри себя. 2. Поддержка внутреннего состояния: открыт / закрыт. 3. Поддержка состояния замка: заперт / отперт. 4. Разрешение открытия только при отсутствии замка или наличии верного ключа. 5. Управление содержимым: добавление и извлечение предметов. |
GameObject ILockable IItem Key |
| Key | |
|---|---|
| Обязанности | Взаимодействия |
|
1. Представление предмета, который можно поднять с пола. 2. Хранение уникального идентификатора для отпирания замков. 3. Предоставление идентификатора дверям и контейнерам для проверки. |
GameObject IItem |