Каркас для игры вида Hidden Objects. C++.
Архитектура
-
Главный модуль, реализующий инициализацию графической системы, системы работы с данными, игровую логику, взаимодействие пользователя с игрой.
-
Модуль работы с БД. Данный модуль используется для хранения данных об энергии, которая тратится на каждое прохождение комнаты, данные о временных рекордах, время последнего запуска игры. Используется SQLIte. Код для работы с долговременным хранилищем выделен в отдельный класс (Store), инкапсулирующий специфику использования БД и предоставляющий интерфейс для работы с данными игры.
-
Модуль реализующий init, loop, release экранов игры (ScreenManager). В нашем случае - два игровых экрана: главный экран (HomeScene), на котором располагаются иконки комнат для прохождения и экран комнаты (RoomScene), в котором непосредственно проходит игра.
-
Модуль, показывающий игровой UI поверх экранов, диалоги (DialogManager).
-
Модуль, строящий комнаты по входному XML на заданном экране (Room).
-
Справочные данные о размещении объектов в комнате и время, отведённое на исследование каждой комнаты, хранятся в XML-файлах (см. папку 'Resources').
Игровой процесс
-
Главный экран игры (HomeScene). На нём изображён план дома (комнаты). По клику на выбранную комнату начинается процесс прохождения комнаты.
-
Комната считается пройденной, как только в ней собрано не менее 4 предметов. Можно выйти без отметки о прохождении, выбрав левый верхний угол на экране комнаты.
-
Найденные в комнате предметы не запоминаются. Но при каждом новом входе в комнату предметы располагаются случайно.
-
У игрока есть показатель — энергия: он тратится на прохождение комнаты. Если энергии не хватает для прохождения комнаты, пользователю сообщается диалогом.
-
Энергия восстанавливается со временем: во время работы приложения плюс учитывается время, когда приложение не запущено.
-
Экран прохождения комнаты (RoomScene). Отображается фон комнаты и предметы поверх него. Реализация эффекта нахождения и подбора предмета - простое плавное "улетание" объекта за границу экрана. Таймер, отсчитывающий оставшееся для прохождения комнаты время.
-
Показываются след. диалоги (ManagerDialog): Информация о комнате (время на исследование комнаты и лучшее время, за которое эта комната была пройдена раньше). Результат исследования комнаты (комната пройдена или не хватило времени). Невозможность входа в комнату, когда у игрока не хватает энергии.
Движок > Cocos2d-x.
Среда разработки > MS VC++.
Демонстрация
Зависимости
Cocos2d-x > http://cocos2d-x.org
Скомпилированная версия проекта лежит в папке 'run'. Может потребоваться установить Microsoft Visual C++ 2010 Redistributable Package > http://microsoft.com/ru-ru/download/details.aspx?id=5555
Описание проекта (в виде тестового задания) находится в папке '!readme-task'.