# Документация классов ## Game Основной класс игры. Управляет игровым циклом, загрузкой данных, отображением карты, обработкой команд игрока, взаимодействием с объектами и переходами между локациями. ### Поля | Поле | Тип | Описание | | ------------ | --------------------- | ---------------- | | player | Player | Игрок | | locations | std::vector | Список локаций | | itemDatabase | std::vector | База предметов | | isRunning | bool | Флаг работы игры | ### Методы | Метод | Назначение | | ----------------- | ---------------------------- | | run() | Запуск игры | | loadItems() | Загрузка предметов | | loadLocations() | Загрузка локаций | | render() | Отрисовка текущего состояния | | processCommand() | Обработка команды игрока | | movePlayer() | Перемещение игрока | | handleTile() | Обработка клетки карты | | solveRiddle() | Решение загадки | | openChest() | Открытие сундука | | interactWithNPC() | Взаимодействие с NPC | | startCombat() | Запуск боя | --- ## Player Класс игрока. ### Поля | Поле | Тип | Описание | | ---------------- | ----------- | ------------------------ | | name | std::string | Имя персонажа | | hp | int | Здоровье | | maxHp | int | Максимальное здоровье | | atk | int | Базовый урон | | gold | int | Количество золота | | currentLocation | int | Текущая локация | | position | Point | Позиция на карте | | inventory | Inventory | Инвентарь | | equippedWeaponId | int | ID экипированного оружия | ### Методы | Метод | Назначение | | ------------- | ---------------------- | | showStats() | Вывод характеристик | | getDamage() | Расчёт итогового урона | | usePotion() | Использование зелья | | equipWeapon() | Экипировка оружия | --- ## Inventory Инвентарь игрока. ### Поля | Поле | Тип | | ----- | -------------------------- | | items | std::vector | ### Методы | Метод | Назначение | | ------------ | ------------------------- | | addItem() | Добавление предмета | | removeItem() | Удаление предмета | | hasItem() | Проверка наличия предмета | | show() | Вывод содержимого | --- ## Location Игровая локация. ### Поля | Поле | Назначение | | --------------------- | ------------------------ | | id | Уникальный идентификатор | | title | Название | | width | Ширина карты | | height | Высота карты | | map | ASCII-карта | | startPosition | Стартовая позиция | | north/south/east/west | Связи между локациями | | riddle | Загадка | | chests | Сундуки | | npcs | NPC | | enemies | Противники | ### Методы | Метод | Назначение | | -------------- | ---------------------------- | | loadFromFile() | Загрузка локации | | draw() | Отрисовка карты | | isWalkable() | Проверка проходимости клетки | | getTile() | Получение символа карты | --- ## NPC Неигровой персонаж. ### Поля | Поле | Назначение | | ---------- | ------------------------ | | id | Уникальный идентификатор | | name | Имя | | state | Состояние | | hp | Здоровье | | damage | Урон | | dialogText | Основной текст диалога | | options | Варианты ответов | | position | Координаты | | defeated | Флаг поражения | ### Методы | Метод | Назначение | | ------------------- | ------------------------- | | loadFromFile() | Загрузка NPC | | parseState() | Разбор состояния | | parseDialogResult() | Разбор результата диалога | --- ## SaveManager Система сохранения и загрузки игры. ### Методы | Метод | Назначение | | ---------- | --------------- | | saveGame() | Сохранение игры | | loadGame() | Загрузка игры | --- ## Logger Система журналирования событий. ### Методы | Метод | Назначение | | ----- | ------------------------- | | log() | Запись события в лог-файл |