Пример 01 - Минимальное HGE приложение
Сначала, мы добавляем заголовок hge.h и объявляем переменную для хранения указателя на
интерфейс HGE:
#include <hge.h>
HGE *hge = 0;
Затем создаем функцию кадра. Функция кадра - это пользовательская функция, которую будет вызывать HGE
один раз на кадр: поместим сюда код цикла игры. Когда функция кадра возвращает true, HGE
останавливает выполнение игрового цикла.
В этом примере мы просто проверяем нажата ли клавиша ESC:
bool FrameFunc()
{
if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
return false;
}
Функция WinMain - стандартная точка входа в приложение windows.
Здесь мы получим указатель на интерфейс HGE для доступа к функциям HGE functions.
В этом примере мы используем глобальную переменную, для указателя на интерфейс HGE.
Взамен этого вы можете вызывать функцию hgeCreate каждый раз
в момент ображеня к HGE. Только нужно следить за соответсвующим вызовом функции Release
на каждый вызов hgeCreate.
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
hge = hgeCreate(HGE_VERSION);
Затем мы устанавливаем некоторые внтуренние переменные HGE чтобы настроить требуемое окружение.
Хотя большинство переменных системы имеют соответствующие значения по умолчанию, как мимниму
переменная HGE_FRAMEFUNC должна быть
установлена перед вызовом System_Start.
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
hge->System_SetState(HGE_WINDOWED, true);
hge->System_SetState(HGE_USESOUND, false);
hge->System_SetState(HGE_TITLE,
"HGE Tutorial 01 - Minimal HGE application");
Теперь мы инициализируем HGE с установленными параметрами.
Если что-то пойдет не так, функция System_Initiate
вернет false и более подробное описание того, что произошло можно узнать вызвав функцию
System_GetErrorMessage.
Настроив HGE, мы запускаем игровой цикл вызовом функции System_Start.
Выполнение "останавливается" здесь, когда функция кадра вернет значение true.
if(hge->System_Initiate())
{
hge->System_Start();
}
else
{
MessageBox(NULL, hge->System_GetErrorMessage(), "Error",
MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
}
Теперь была нажата ESC или же пользователь закрыл окно приложения. Необходимо восстановить
видео режим и освободить все выделенные ресурсы.
Также нужно освободить интерфейс HGE:
hge->System_Shutdown();
hge->Release();
return 0;
}
Вуаля! Всего 20 строк кода и у нас полнофункциональная и работающая заготовка для игры.
Полный исходны код с детальными комментариями для этого примера можно найти в директории tutorials\tutorial01.
|