|
HGE Engine易学易用很适合初学者进行学习并且很容易的写出自己的游戏。你基本上不需要具备C++的很多知识就可使用HGE进行实际的工作。鉴于HGE目前大都是E文教程,这里我就为大家领进HGE Engine游戏开发的大门。顺便说一下在HGE的官方论坛上有许多我们国人参与讨论哦! 做为第一讲我们先来带领你看一下迷人的Particle也就是粒子系统,何为粒子系统呢?就是用电脑在显示屏上画出不同形状和颜色数目巨多的点并加入算法来控制这些点的轨迹等效果。粒子系统可以用来模拟水火电气等自然现象。不多说了,Let's Go! 下面是代码:在Visual Studio 2003.Net/C++/Windows XP编译通过。
MyHGEDemo1.cpp ----------------------------------------------------------------------------------------------------------------------------------------------- #include "hge.h" //引用HGE头文件,每个使用HGE Engine的程序都要有这行。 #include "hgesprite.h" //精灵系统头文件 #include "hgefont.h" //字体系统头文件 #include "hgeparticle.h" //粒子系统头文件
//定义Engine的指针 HGE *hge=NULL;
//HGE对象定义 hgeSprite *spt; hgeFont *fnt; //粒子系统 hgeParticleSystem *par;
//纹理和声音句柄 HTEXTURE tex; HEFFECT snd; hgeQuad quad;
//回调,游戏主循环 bool FrameFunc() {
float dt=hge->Timer_GetDelta();
// 检测键盘 if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;//按下ESCAPE则结束循环
quad.v[0].tx=0; quad.v[0].ty=0; quad.v[1].tx=1; quad.v[1].ty=0; quad.v[2].tx=1; quad.v[2].ty=1; quad.v[3].tx=0; quad.v[3].ty=1;
//更新粒子系统 //设置粒子密度 par->info.nEmission=150; par->Update(dt);//更新粒子系统状态
//渲染画面 hge->Gfx_BeginScene(); hge->Gfx_Clear(0x00000000); hge->Gfx_RenderQuad(&quad); par->Render();//粒子系统渲染 //输出字体 fnt->printf(5,5,"deltatime:%.3f\nFPS:%d\nAuthor:Rain", dt, hge->Timer_GetFPS()); hge->Gfx_EndScene();//渲染结束
//继续循环 return false; }
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { //创建Engine接口 hge = hgeCreate(HGE_VERSION);
//生成日志 hge->System_SetState(HGE_LOGFILE, "Game.log");
//设置回调 hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
//设置窗口标题 hge->System_SetState(HGE_TITLE, "MyHGEDemo");
//设置最大FPS hge->System_SetState(HGE_FPS, 100);
//是否是窗口模式 hge->System_SetState(HGE_WINDOWED, true);
//设置窗口的大小 hge->System_SetState(HGE_SCREENWIDTH, 800);
hge->System_SetState(HGE_SCREENHEIGHT, 600);
//设置颜色深度 hge->System_SetState(HGE_SCREENBPP, 32);
//使用声音资源 hge->System_SetState(HGE_USESOUND, true);
//Engine初始化 if(hge->System_Initiate()) {
//载入声音和纹理 snd=hge->Effect_Load("BG.mp3"); tex=hge->Texture_Load("texture.png"); quad.tex=hge->Texture_Load("texture.jpg"); if(snd && tex && quad.tex)//如果没有意外 { //载入字体 fnt=new hgeFont("font1.fnt");
//创建粒子Sprite用于粒子系统 spt=new hgeSprite(tex, 0,0, 32, 32); spt->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE); spt->SetHotSpot(16,16);
// 创建和设置粒子系统 par=new hgeParticleSystem("trail.psi",spt); par->MoveTo(400,300);//粒子发散中心点 par->Fire();//启动
quad.blend=BLEND_ALPHABLEND | BLEND_COLORMUL | BLEND_NOZWRITE;
for(int i=0;i<4;i++) { //设置颜色,格式为0xAARRGGBB quad.v.col=0xFFFFFFFF; }
quad.v[0].x=0; quad.v[0].y=0; quad.v[1].x=1024; quad.v[1].y=0; quad.v[2].x=1024; quad.v[2].y=1024; quad.v[3].x=0; quad.v[3].y=1024;
hge->Effect_PlayEx(snd,100,0,1.0f,true); //启动Engine开始主循环 hge->System_Start();//该方法反回则代码游戏将要退出
//删除用过的资源 delete par; par=NULL; delete fnt; fnt=NULL; delete spt; spt=NULL;
hge->Target_Free(quad.tex); hge->Texture_Free(tex); hge->Effect_Free(snd); } }
//Engine关闭 hge->System_Shutdown(); //释放指针 hge->Release();
return 0; }
----------------------------------------------------------------------------------------------------------------------------------------------- 哈哈,代码就是这些。无需多言,我加入了详细的注释。更加详细的在以后我会慢慢道来。 注:编译时要加入hge.lib和hgehelp.lib二个链接库。 这里提供 该文件只允许会员下载! 登陆 | 注册 这里并不提供源代码下载,希望自己慢慢键入代码已加深记忆。另为压缩包中不提供HGE Engine的Dll和BASS声音库的支持文件,相信要学习HGE的朋友都因该有了。 以下是运行时的截图:
|
|