Движок HGE. Второй туториал Приветствую! Сегодня я переведу вам второй туториал из прилагающихся к HGE. Я пока не хочу писать отсебятины, ибо в HGE разобрался слабо. Потом напишу что-нибудь новенькое.
#include <hge.h>
HGE *hge=0;
hgeQuad quad;
HEFFECT snd;
float x=100.0f, y=100.0f;
float dx=0.0f, dy=0.0f;
const float speed=90;
const float friction=0.98f;
void boom()
{
int pan=int((x-400)/4);
float pitch=(dx*dx+dy*dy)*0.0005f+0.2f;
hge->Effect_PlayEx(snd,100,pan,pitch);
}
bool FrameFunc()
{
float dt=hge->Timer_GetDelta();
if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
if (hge->Input_GetKeyState(HGEK_LEFT)) dx-=speed*dt;
if (hge->Input_GetKeyState(HGEK_RIGHT)) dx+=speed*dt;
if (hge->Input_GetKeyState(HGEK_UP)) dy-=speed*dt;
if (hge->Input_GetKeyState(HGEK_DOWN)) dy+=speed*dt;
dx*=friction; dy*=friction; x+=dx; y+=dy;
if(x>784) {x=784-(x-784);dx=-dx;boom();}
if(x584) {y=584-(y-584);dy=-dy;boom();}
if(yGfx_BeginScene();
hge->Gfx_Clear(0);
hge->Gfx_RenderQuad(&quad);
hge->Gfx_EndScene();
return false;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
hge = hgeCreate(HGE_VERSION);
hge->System_SetState(HGE_LOGFILE, "hge_tut02.log");
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
hge->System_SetState(HGE_TITLE, "HGE Tutorial 02 - Using input, sound and rendering");
hge->System_SetState(HGE_WINDOWED, true);
hge->System_SetState(HGE_SCREENWIDTH, 800);
hge->System_SetState(HGE_SCREENHEIGHT, 600);
hge->System_SetState(HGE_SCREENBPP, 32);
if(hge->System_Initiate())
{
snd=hge->Effect_Load("menu.wav");
quad.tex=hge->Texture_Load("particles.png");
if(!snd || !quad.tex)
{
MessageBox(NULL, "Can't load MENU.WAV or PARTICLES.PNG", "Error",
MB_OK | MB_ICONERROR | MB_APPLMODAL);
hge->System_Shutdown();
hge->Release();
return 0;
}
quad.blend=BLEND_ALPHAADD | BLEND_COLORMUL | BLEND_ZWRITE;
for(int i=0;iSystem_Start();
hge->Texture_Free(quad.tex);
hge->Effect_Free(snd);
}
else MessageBox(NULL, hge->System_GetErrorMessage(), "Error",
MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
hge->System_Shutdown();
hge->Release();
return 0;
}
Команда компиляции, кстати говоря, должна быть та же.
Урок 9 - Классы.
|