Пример 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.