From 27a0a8d4c567537d9688965d94aa8a30bb32ea96 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sun, 21 Mar 2021 14:19:12 +0300 Subject: [PATCH] Channged README structure --- README.md | 88 +++------------------------------------------------- STRUCTURE.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 83 deletions(-) mode change 100755 => 100644 README.md create mode 100755 STRUCTURE.md diff --git a/README.md b/README.md old mode 100755 new mode 100644 index d753d44..7d409ca --- a/README.md +++ b/README.md @@ -1,83 +1,5 @@ -# Описание игры - -## Общее - -1. Жанр - RTS - -2. Графика - ncurses - -3. Язык - c++ - -4. Сборка - cmake . && make - -## Описание - -    Игра - попытка сделать RTS в консоли с расширяемыми и конфигурируемыми абстрактными юнитами. Т.е. все более-менее сложные объекты в игре являются классом Unit с определённым набором модулей дополнения. Модули задают свойства (кроме основных характеристик) и способности объекта. - -    Управление - стрелочки для "курсора", которым можно что-то делать в мире, выбор в меню с помощью привязанных клавиш. Хотелось бы ещё довавить привязки клавиш к группам юнитов и позициям (дополнительно). - -    Игра может быть будет против AI, ещё менее вероятно получится / успею сделать игру для 2 игроков с одного компьютера (дополнительно) и по p2p соединению (дополнительно) - -     Дополнительно - значит "было бы хорошо сделать, но скорее всего не успею" - -## Классы - -1. App - главный класс, отвечает за инициализацию приложения - -2. Game - класс, отвечающий за игру - -3. Menu - класс, отвечающий за меню вне игры - -4. Draw - "фасад" библиотеки отрисовки, низкоуровневое рисование - -5. MenuDraw - "фасад", высокоуровневое рисование для Menu (элементы вне игры) - - Рисует меню по массиву строк, реализует выделение активного пункта - -6. GameDraw - "фасад", высокоуровневое рисование для Game - - Принимает указатели на GameMap, GameMenu, PlayerData - - Рисует интерфейс: меню из пунктов + клавиш активации пунктов, карт, рисует миникарту по карте (дополнительная цель) - -7. Input - обработка ввода для игрока / buhjrjd - -8. GameController - Для каждого игрока / AI преобразует команды в события в GameEvents - -9. GameEvents - центр событий, передаётся как аргумент в разные классы, имеет функцию, ставящую функцию для прослушивания события и функцию для активации события - -10. PlayerData - текущие данные для игрока (позиция "курсора" и тп) - -11. GameMap - класс карты - - Карта состоит из Cell - - На карте есть Action-элементы - простейшие элементы, как-то меняющие мир при update (например, атака) - - На карте есть UnitObj - объекты юнитов (Unit) на карте - -12. Cell - клетка поля, содержит тип, привязанный Unit (если есть) и привязанный Action (если есть) - -13. UnitObj - набор клеток, привязан к Unit и отображает его на карте - -14. GameMenu - класс, создающий и обовляющий состояние меню (в зависимости от активного объекта и тп) - -15. Unit - основной класс юнита, состоит из базовых карактеристик, привязки к Map, PlayerData, GameMenu..., массива Memory - памяти, использующейся для совершения действий, массива Module - модулей, позволяющих юниту совершать действия и тп - -16. UnitBuilder - конструктор Unit из файла / функциями - - Конфигурируется набор модулей, некоторый характеристика, размер Memory - -17. Action - может реагировать на события, может что-то делать на update(), на прохожение через клетку (в зависимости от типа), на столкновение с UnitObj - -18. Attack - простейшая атака, мгновенно двигается до цели и наносит повреждения, потомок Action - -19. Module - модуль Unit, может что-то делать с Memory, привязанными к Unit классами (например, Map). Номера Memory ячеек для функций конфигурируются в ModuleBuilder - - От Module наследуются различные осн. модули (двагатель, пушка...), логические для элементов Memory (while i move j -> k, if i copy j -> k ...) (дополнительно), простейшие (таймер, подвинутся. создать опр. Action...) (дополнительно) - -20. ModuleBuilder - конструктор Module из файла / функциями - - Конфигурируются все используемые Memory-поля, некоторые характеристики - -21. Memory - простая ячейка памяти (пока), умеет get/set (может быть стоит заменить просто на int) +## Игра +RTS в консоли с абстрактной расширяемой системой юнитов. +Подробное описание - см. STRUCTURE.md +## Установка +cmake . && make diff --git a/STRUCTURE.md b/STRUCTURE.md new file mode 100755 index 0000000..d753d44 --- /dev/null +++ b/STRUCTURE.md @@ -0,0 +1,83 @@ +# Описание игры + +## Общее + +1. Жанр - RTS + +2. Графика - ncurses + +3. Язык - c++ + +4. Сборка - cmake . && make + +## Описание + +    Игра - попытка сделать RTS в консоли с расширяемыми и конфигурируемыми абстрактными юнитами. Т.е. все более-менее сложные объекты в игре являются классом Unit с определённым набором модулей дополнения. Модули задают свойства (кроме основных характеристик) и способности объекта. + +    Управление - стрелочки для "курсора", которым можно что-то делать в мире, выбор в меню с помощью привязанных клавиш. Хотелось бы ещё довавить привязки клавиш к группам юнитов и позициям (дополнительно). + +    Игра может быть будет против AI, ещё менее вероятно получится / успею сделать игру для 2 игроков с одного компьютера (дополнительно) и по p2p соединению (дополнительно) + +     Дополнительно - значит "было бы хорошо сделать, но скорее всего не успею" + +## Классы + +1. App - главный класс, отвечает за инициализацию приложения + +2. Game - класс, отвечающий за игру + +3. Menu - класс, отвечающий за меню вне игры + +4. Draw - "фасад" библиотеки отрисовки, низкоуровневое рисование + +5. MenuDraw - "фасад", высокоуровневое рисование для Menu (элементы вне игры) + + Рисует меню по массиву строк, реализует выделение активного пункта + +6. GameDraw - "фасад", высокоуровневое рисование для Game + + Принимает указатели на GameMap, GameMenu, PlayerData + + Рисует интерфейс: меню из пунктов + клавиш активации пунктов, карт, рисует миникарту по карте (дополнительная цель) + +7. Input - обработка ввода для игрока / buhjrjd + +8. GameController - Для каждого игрока / AI преобразует команды в события в GameEvents + +9. GameEvents - центр событий, передаётся как аргумент в разные классы, имеет функцию, ставящую функцию для прослушивания события и функцию для активации события + +10. PlayerData - текущие данные для игрока (позиция "курсора" и тп) + +11. GameMap - класс карты + + Карта состоит из Cell + + На карте есть Action-элементы - простейшие элементы, как-то меняющие мир при update (например, атака) + + На карте есть UnitObj - объекты юнитов (Unit) на карте + +12. Cell - клетка поля, содержит тип, привязанный Unit (если есть) и привязанный Action (если есть) + +13. UnitObj - набор клеток, привязан к Unit и отображает его на карте + +14. GameMenu - класс, создающий и обовляющий состояние меню (в зависимости от активного объекта и тп) + +15. Unit - основной класс юнита, состоит из базовых карактеристик, привязки к Map, PlayerData, GameMenu..., массива Memory - памяти, использующейся для совершения действий, массива Module - модулей, позволяющих юниту совершать действия и тп + +16. UnitBuilder - конструктор Unit из файла / функциями + + Конфигурируется набор модулей, некоторый характеристика, размер Memory + +17. Action - может реагировать на события, может что-то делать на update(), на прохожение через клетку (в зависимости от типа), на столкновение с UnitObj + +18. Attack - простейшая атака, мгновенно двигается до цели и наносит повреждения, потомок Action + +19. Module - модуль Unit, может что-то делать с Memory, привязанными к Unit классами (например, Map). Номера Memory ячеек для функций конфигурируются в ModuleBuilder + + От Module наследуются различные осн. модули (двагатель, пушка...), логические для элементов Memory (while i move j -> k, if i copy j -> k ...) (дополнительно), простейшие (таймер, подвинутся. создать опр. Action...) (дополнительно) + +20. ModuleBuilder - конструктор Module из файла / функциями + + Конфигурируются все используемые Memory-поля, некоторые характеристики + +21. Memory - простая ячейка памяти (пока), умеет get/set (может быть стоит заменить просто на int)