HGE中文社区 HGE中文帮助
今天了解到有个HGE的2D免费游戏引擎,不由得心痒痒想看看,本来还害怕太大,下起来麻烦,结果去其官网一看,才2M多,马上就下下来。
官网地址:
Google了一下,英文资料比较多,中文就几篇,找到一篇中文的tutorial来试试吧。
Tutorial地址:?id=66
二话不说,建立一个win32的普通窗口工程,选择空项目,把上面的代码拷贝一下,再将lib什么的加上,代码基本就是这样的:
#include "hge.h" //引用HGE头文件,每个使用HGE Engine的程序都要有这行。hge #include "hgesprite.h" //精灵系统头文件
#include "hgefont.h" //字体系统头文件
#include "hgeparticle.h" //粒子系统头文件
#pragma comment (lib,"D:\\src\\libs\\hge16\\lib\\vc\\hge.lib")
#pragma comment (lib,"D:\\src\\libs\\hge16\\lib\\vc\\hgehelp.lib")
//定义Engine的指针
HGE *hge=NULL;
//HGE对象定义
hgeSprite *spt;
hgeFont *fnt;
//粒子系统
hgeParticleSystem *par;
//颜色
hgeColor color;
//纹理和声音句柄
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;
color.SetHWColor(0xFFFFE060);
//更新粒子系统
//设置粒子密度
par->info.nEmission=150;
par->Update(dt);//更新粒子系统状态
//渲染画面
hge->Gfx_BeginScene();
hge->Gfx_Clear(0x00000000);

hge->Gfx_RenderQuad(&quad);
par->Render();//粒子系统渲染
//输出字体
//fnt->SetColor(ARGB(0,0,48,156));
fnt->SetColor(color.GetHWColor());
fnt->printf(5,5,0,"deltatime:%.3f\nFPS:%d\nAuthor:thinkinnight", 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[i].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;
}
build一下,哈,成功。hge
运行一下呢?咦!怎么出来一下就跳出了,看来要看看代码,原来是这样snd=hge->Effect_Load("BG.mp3");
tex=hge->Texture_Load("texture.png");
quad.tex=hge->Texture_Load("texture.jpg");
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21781-1.html
我们也要巡航才对吗
请把你的这条高论建议给奥巴马和安倍