R
rrrFer
Логическая игра - ремейк классического "полного квадрата".
Написана на C++, Qt, работает под Windows, Linux и Android.
Суть игры в том, что нужно выбрать начальную позицию в лабиринте и маршрут движения по нему так, чтобы побывать в каждой клетке лишь один раз.
Исходный код игры выложен на bitbucket (можно скачать архив или использовать git):
Игрушка выложена на гугл маркет: https://play.google.com/store/apps/details?id=org.qtproject.example.hedgenhog
По коду то, что сейчас лежит на маркете и в репозитории отличается от описания (по ссылке выше) во многом, поэтому опишу основные моменты.
Игра состоит из уровней, которые хранятся в базе данных (SQLite). Однако, описывать уровень в базе не очень удобно - поэтому ресурсом является (встраивается в бинарник) небольшой файл с уровнями. При запуске игры информация из файла добавляется в базу, если в базе уже есть такой уровень (по ключу) - то ничего изменено не будет, иначе - будет добавлена запись. Т.е. чтобы добавить уровень достаточно добавить строку в файл.
В базе данных хранится информация об уровнях - они могут быть пройдены. открыты или закрыты. Для работы с БД используется шаблон проектирования "фасад".
Кроме того БД (другая) используется для сохранения настроек игры (это может быть что угодно, но сейчас это лишь громкость звука).
Затем, игра разделяется на ряд экранов - экран помощи (с демоигрой, где есть подсказки), экран меню (выбор уровня) и экран игры.
Для управления экранами сейчас используется стек виджетов.
Виджет меню состоит из кнопок. Кнопка соответствует уровню и должна отражать его состояние (которое хранится в БД). В связи с этим БД нужна и кнопке и виджету игры, поэтому с базой уровней используется шаблон проектирования Singleton.
В старой версии (которая описана) нарушался принцип инверсии зависимостей (DIP) - при движении ежика по игровому полю, поле отслеживала положение ежика и стен лабиринта и управляла его поведением. Из за этого добавить новый тип клеток игрового поля было трудно. Сейчас (см. в репозитории) еж сам перемещается и обращается к блокам, в которые собирается попасть чтобы узнать как они должны изменить его состояние.
Написана на C++, Qt, работает под Windows, Linux и Android.
Суть игры в том, что нужно выбрать начальную позицию в лабиринте и маршрут движения по нему так, чтобы побывать в каждой клетке лишь один раз.
Исходный код игры выложен на bitbucket (можно скачать архив или использовать git):
Ссылка скрыта от гостей
Игрушка выложена на гугл маркет: https://play.google.com/store/apps/details?id=org.qtproject.example.hedgenhog
Ссылка скрыта от гостей
описан (старая версия).По коду то, что сейчас лежит на маркете и в репозитории отличается от описания (по ссылке выше) во многом, поэтому опишу основные моменты.
Игра состоит из уровней, которые хранятся в базе данных (SQLite). Однако, описывать уровень в базе не очень удобно - поэтому ресурсом является (встраивается в бинарник) небольшой файл с уровнями. При запуске игры информация из файла добавляется в базу, если в базе уже есть такой уровень (по ключу) - то ничего изменено не будет, иначе - будет добавлена запись. Т.е. чтобы добавить уровень достаточно добавить строку в файл.
В базе данных хранится информация об уровнях - они могут быть пройдены. открыты или закрыты. Для работы с БД используется шаблон проектирования "фасад".
Кроме того БД (другая) используется для сохранения настроек игры (это может быть что угодно, но сейчас это лишь громкость звука).
Затем, игра разделяется на ряд экранов - экран помощи (с демоигрой, где есть подсказки), экран меню (выбор уровня) и экран игры.
Для управления экранами сейчас используется стек виджетов.
Виджет меню состоит из кнопок. Кнопка соответствует уровню и должна отражать его состояние (которое хранится в БД). В связи с этим БД нужна и кнопке и виджету игры, поэтому с базой уровней используется шаблон проектирования Singleton.
В старой версии (которая описана) нарушался принцип инверсии зависимостей (DIP) - при движении ежика по игровому полю, поле отслеживала положение ежика и стен лабиринта и управляла его поведением. Из за этого добавить новый тип клеток игрового поля было трудно. Сейчас (см. в репозитории) еж сам перемещается и обращается к блокам, в которые собирается попасть чтобы узнать как они должны изменить его состояние.
Последнее редактирование: