a single function call; fully automated memory management; precaching and purging of specific resource groups.
Графічний интерфес користувача
Просте і гнучке управління контролю; стандартні контроли: текст, кнопки та повзунки; підтримка сильно активних, анімованих ДУІ.
Вектори і кольору
Повний набір операцій і функцій для підтримки 2д векторів; повний набір операцій для обчислень з квітами у форматі ARGB; апаратне перетворення кольорів; фіксування кольорів.
Всю інформації, по використанню цієї бібліотеки я брала на сайті gamesmaker (там розташована документації російською про цю бібліотеці).
Інтерфейсні функції
· hgeCreateВозвращает покажчик на інтерфейс HGE.
· ReleaseОсвобождает отриманий інтерфейс HGE.
Системні функції
· System_ShutdownВосстанавлівает відеорежим і звільняє виділені ресурси.
· System_StartНачінает виконувати певну користувачем функцію кадру.
· System_SetStateУстанавлівает внутрішню змінну системи.
Функції роботи з таймером
· Timer_GetTimeВозвращает час, що минув після виклику функції System_Initiate.
· Timer_GetDeltaВозвращает час, що минув з останнього виклику функції кадру.
Графічні функції
· Gfx_BeginSceneНачінает виведення графіки.
· Gfx_EndSceneЗаканчівает виведення графіки і відображає буфер на екрані.
· Gfx_ClearОчіщает мета виводу і z-буфер.
За допомогою цих функцій і деяких інших наданих цією бібліотекою, я написала гру Zuma Deluxe .
2. Практика
У процесі створення гри були розроблені чотири класи: Player, Game, BallPath, hgeGUIMenuItem і Forminput. У кожного з класів своє особливе призначення. Їх завдання можна легко визначити з їх назви. А тепер детальніше про кожен з них.
клас Player
Цей клас відповідає за дії гравця, у грі гравцем є жаба, якій і управляє людина.
Клас влаштований досить простою
Три public поля:
· int level (призначає рівень гравця);
· int life (скільки у гравця залишилося життів);
· float fx, fy (координати жаби на екрані, залежить від рівня гравця).
Так само в класі є ряд корисних функцій:
· bool ChekBall (Ball ListBall [20], int i) - викликається, коли ми дістаємо кульку з ланцюжка, для перевірки чи немає на цьому місці три кульки однакового кольору;
· void DrawFrogBall (Ball ListBall [20], int i) - обчислює координати всіх кульок, після вилучення одного з ланцюжка;
· void DrawBallAfter (Ball ListBall [20], int i, int frog) - обчислює координати всіх кульок, після вставки в ланцюжок кульки;
· int GetBall (HGE * hge, Ball ListBall [20]) - обчислює за яким кульці клікнув гравець і викликає функцію DrawFrogBall;
int Player :: GetBall (HGE * hge, Ball ListBall [20])
{(hge- gt; Input_GetKeyState (HGEK_LBUTTON) == true)
{mx, my;
//bool check; gt; Input_GetMousePos ( amp; mx, amp; my); (int i=0; i lt; 20; i ++)
{((ListBall [i]. x lt;=mx amp; amp; mx lt;=ListBall [i]. x + 30) amp; amp; (ListBall [i]. y lt;=my amp; amp; my lt;=ListBall [i]. y + 30))
{(ListBall [i]. explosition == false) (ListBall, i); (ChekBall (ListBall, i) == true) 2; 1;
};
} 0;
} 0;
} PushBall (HGE * hge, Ball ListBall [20], int frog) - обчислює після якогось кульки гравець хоче вставити свою кульку і викликає функцію. DrawBallAfter; Player :: PushBall (HGE * hge, Ball ListBall [20], int frog)
{(hge- gt; Input_GetKeyState (HGEK_LBUTTON) == true)
{mx, my; gt; Input_GetMousePos ( amp; mx, amp; my); (int i=0; i lt; 20; i ++)
{((ListBall [i]. x lt;=mx amp; amp; mx lt;=ListBall [i]. x + 30) amp; amp; (ListBall [i]. y lt;=my amp; amp; my lt;=ListBall [i]. y + 30))
{(ListBall, i, frog); (i, ListBall, frog); t=hge- gt; Timer_GetDelta (); (t lt; 30000)=t + hge- gt; Timer_GetDelta () ; true;
};
...