5.8 KiB
Executable file
Описание игры
Общее
-
Жанр - RTS
-
Графика - ncurses
-
Язык - c++
-
Сборка - cmake . && make
Описание
Игра - попытка сделать RTS в консоли с расширяемыми и конфигурируемыми абстрактными юнитами. Т.е. все более-менее сложные объекты в игре являются классом Unit с определённым набором модулей дополнения. Модули задают свойства (кроме основных характеристик) и способности объекта.
Управление - стрелочки для "курсора", которым можно что-то делать в мире, выбор в меню с помощью привязанных клавиш. Хотелось бы ещё довавить привязки клавиш к группам юнитов и позициям (дополнительно).
Игра может быть будет против AI, ещё менее вероятно получится / успею сделать игру для 2 игроков с одного компьютера (дополнительно) и по p2p соединению (дополнительно)
Дополнительно - значит "было бы хорошо сделать, но скорее всего не успею"
Классы
-
App - главный класс, отвечает за инициализацию приложения
-
Game - класс, отвечающий за игру
-
Menu - класс, отвечающий за меню вне игры
-
Draw - "фасад" библиотеки отрисовки, низкоуровневое рисование
-
MenuDraw - "фасад", высокоуровневое рисование для Menu (элементы вне игры)
Рисует меню по массиву строк, реализует выделение активного пункта
-
GameDraw - "фасад", высокоуровневое рисование для Game
Принимает указатели на GameMap, GameMenu, PlayerData
Рисует интерфейс: меню из пунктов + клавиш активации пунктов, карт, рисует миникарту по карте (дополнительная цель)
-
Input - обработка ввода для игрока / buhjrjd
-
GameController - Для каждого игрока / AI преобразует команды в события в GameEvents
-
GameEvents - центр событий, передаётся как аргумент в разные классы, имеет функцию, ставящую функцию для прослушивания события и функцию для активации события
-
PlayerData - текущие данные для игрока (позиция "курсора" и тп)
-
GameMap - класс карты
Карта состоит из Cell
На карте есть Action-элементы - простейшие элементы, как-то меняющие мир при update (например, атака)
На карте есть UnitObj - объекты юнитов (Unit) на карте
-
Cell - клетка поля, содержит тип, привязанный Unit (если есть) и привязанный Action (если есть)
-
UnitObj - набор клеток, привязан к Unit и отображает его на карте
-
GameMenu - класс, создающий и обовляющий состояние меню (в зависимости от активного объекта и тп)
-
Unit - основной класс юнита, состоит из базовых карактеристик, привязки к Map, PlayerData, GameMenu..., массива Memory - памяти, использующейся для совершения действий, массива Module - модулей, позволяющих юниту совершать действия и тп
-
UnitBuilder - конструктор Unit из файла / функциями
Конфигурируется набор модулей, некоторый характеристика, размер Memory
-
Action - может реагировать на события, может что-то делать на update(), на прохожение через клетку (в зависимости от типа), на столкновение с UnitObj
-
Attack - простейшая атака, мгновенно двигается до цели и наносит повреждения, потомок Action
-
Module - модуль Unit, может что-то делать с Memory, привязанными к Unit классами (например, Map). Номера Memory ячеек для функций конфигурируются в ModuleBuilder
От Module наследуются различные осн. модули (двагатель, пушка...), логические для элементов Memory (while i move j -> k, if i copy j -> k ...) (дополнительно), простейшие (таймер, подвинутся. создать опр. Action...) (дополнительно)
-
ModuleBuilder - конструктор Module из файла / функциями
Конфигурируются все используемые Memory-поля, некоторые характеристики
-
Memory - простая ячейка памяти (пока), умеет get/set (может быть стоит заменить просто на int)