HGE基本DEMO
一个简单的显示粒子纹理图片、播放音效的DEMO(还没有涉及粒子系统 = =)。
版本:HGE 1.8.1
开发平台:Visual Studio 2005
代码如下:
-
//////////////////////////////////////////////////////////////////////////
-
// CopyRight(c) 2009, YOYO, All Rights Reserved.
-
// Author: LIN YiQian
-
// Created: 2009/08/25
-
// Describe: HGE 1.8.1 simple demo
-
//////////////////////////////////////////////////////////////////////////
-
#include "hge\\include\\hge.h"
-
#include "hge\\include\\hgesprite.h"
-
#include <Windows.h>
-
-
#pragma comment(lib, "hge\\lib\\vc\\hge.lib")
-
#pragma comment(lib, "hge\\lib\\vc\\hgehelp.lib")
-
-
HGE* hge; // HGE指针
-
hgeSprite* hsplite; // HGE粒子精灵指针
-
-
HTEXTURE htexture; // 纹理
-
HEFFECT heffect; // 音效
-
-
HCHANNEL hchannel;
-
-
const int HSCREEN_WIDTH = 800; // 屏幕宽度
-
const int HSCREEN_HEIGHT = 600; // 屏幕高度
-
-
int dx, dy; // 粒子精灵坐标(x,y)
-
-
//////////////////////////////////////////////////////////////////////////
-
// 函数描述:监听键盘方向键及SHIFT键,控制粒子移动
-
//////////////////////////////////////////////////////////////////////////
-
void ListenKeyMove()
-
{
-
int speed = 1;
-
-
if (hge->Input_GetKeyState(HGEK_SHIFT)) // 按下左右SHIFT都可以加速
-
{
-
speed = 5;
-
}
-
-
if (hge->Input_GetKeyState(HGEK_LEFT)) // 按下左方向键
-
{
-
dx -= speed;
-
if (dx < 0)
-
{
-
dx = HSCREEN_WIDTH;
-
}
-
}
-
-
if (hge->Input_GetKeyState(HGEK_RIGHT)) // 按下右方向键
-
{
-
dx += speed;
-
if (dx > HSCREEN_WIDTH)
-
{
-
dx = 0;
-
}
-
}
-
-
if (hge->Input_GetKeyState(HGEK_UP)) // 按下上方向键
-
{
-
dy -= speed;
-
if (dy < 0)
-
{
-
dy = HSCREEN_HEIGHT;
-
}
-
}
-
-
if (hge->Input_GetKeyState(HGEK_DOWN)) // 按下下方向键
-
{
-
dy += speed;
-
if (dy > HSCREEN_HEIGHT)
-
{
-
dy = 0;
-
}
-
}
-
}
-
-
//////////////////////////////////////////////////////////////////////////
-
// 逻辑函数
-
//////////////////////////////////////////////////////////////////////////
-
bool FrameFunc()
-
{
-
if (hge->Input_GetKeyState(HGEK_ESCAPE))
-
{
-
return true;
-
}
-
-
if (hge->Input_GetKeyState(HGEK_SPACE))
-
{
-
hchannel = hge->Effect_Play(heffect); // 播放音效
-
hge->Channel_SetVolume(hchannel, 50); // 设置音效大小
-
}
-
-
// 监听方向键
-
ListenKeyMove();
-
-
return false;
-
}
-
-
//////////////////////////////////////////////////////////////////////////
-
// 渲染函数
-
//////////////////////////////////////////////////////////////////////////
-
bool RenderFunc()
-
{
-
hge->Gfx_BeginScene();
-
-
hge->Gfx_Clear(0); // 清屏(黑色)
-
-
hsplite->Render(dx, dy); // 设置粒子显示在屏幕中点
-
-
hge->Gfx_EndScene();
-
-
return false;
-
}
-
-
//////////////////////////////////////////////////////////////////////////
-
// 程序入口
-
//////////////////////////////////////////////////////////////////////////
-
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
-
{
-
hge = hgeCreate(HGE_VERSION);
-
-
// 设定参数
-
hge->System_SetState(HGE_TITLE, "YOYO's HGE DEMO"); // 窗体标题
-
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc); // 逻辑函数
-
hge->System_SetState(HGE_RENDERFUNC, RenderFunc); // 渲染函数
-
hge->System_SetState(HGE_WINDOWED, true); // 窗口显示
-
hge->System_SetState(HGE_SHOWSPLASH, false); // 关闭LOGO显示
-
hge->System_SetState(HGE_USESOUND, true); // 开启音效
-
hge->System_SetState(HGE_ZBUFFER, true); // 开启Z-Buffer
-
hge->System_SetState(HGE_SCREENWIDTH, HSCREEN_WIDTH); // 设置屏幕宽度
-
hge->System_SetState(HGE_SCREENHEIGHT, HSCREEN_HEIGHT); // 设置屏幕高度
-
hge->System_SetState(HGE_SCREENBPP, 30); // 设置屏幕分辨率
-
hge->System_SetState(HGE_FPS, 100); // 设置速率
-
hge->System_SetState(HGE_LOGFILE, "log_demo.log"); // 设置日志记录文件
-
-
if (hge->System_Initiate()) // 获取句柄
-
{
-
// 加载纹理
-
htexture = hge->Texture_Load("..\\TestHGE\\Res\\particles.png");
-
-
// 加载音效
-
heffect = hge->Effect_Load("..\\TestHGE\\Res\\folder.wav");
-
-
if (htexture == NULL || heffect == NULL) // 如果加载不成功则退出
-
{
-
hge->System_Shutdown();
-
hge->Release();
-
return 1;
-
}
-
-
// 创建粒子精灵
-
hsplite = new hgeSprite(htexture, 0, 0, 32, 32);
-
hsplite->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE); // 设置混合模式
-
hsplite->SetHotSpot(16, 16); // 设置粒子精灵中心点
-
-
// 设置粒子精灵初始位置:屏幕中心
-
dx = HSCREEN_WIDTH/2;
-
dy = HSCREEN_HEIGHT/2;
-
-
// 启动HGE
-
hge->System_Start();
-
-
// 释放纹理
-
hge->Texture_Free(htexture);
-
-
// 释放音效
-
hge->Effect_Free(heffect);
-
-
// 删除指针
-
delete hsplite;
-
hsplite = 0;
-
}
-
-
hge->System_Shutdown();
-
hge->Release();
-
-
return 0;
-
}
需要将HGE1.8.1的include文件夹、lib\vc文件夹、hge.dll、bass.dll拷贝到项目目录下。
另外加载纹理和音效使用了相对路径,项目名字为TestHGE,如果不一样请自己更改 = =。
本例中用到的资源:纹理(particles.png),音效(folder.wav),字体(ms_ui_gothic.fnt),粒子(sliver.psi)
请放置于TestHGE/Res目录下。