HGE基本DEMO
来源:互联网 发布:webshell批量扫描器 编辑:程序博客网 时间:2024/05/21 16:53
一个简单的显示粒子纹理图片、播放音效的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目录下。
- HGE基本DEMO
- HGE粒子系统DEMO
- HGE基本渲染图元
- HGE基本渲染图元
- [HGE]-源码分析-2 一个小demo
- HGE新手贴 (基本体系结构概述等)
- 一个送给HGE初学者的Demo——音乐节奏游戏
- [HGE]-源码分析-4 core里的demo和graphics(a)
- Maven:基本命令 / Demo
- java spi基本demo
- Rxjava基本demo
- 基本算法demo
- Jedis基本操作Demo
- HGE 丢失hge.dll
- HGE 体系结构
- HGE教程
- HGE注意事项
- 初识HGE
- 感慨
- 明天开学
- 感慨
- VS2005:cannot open file 'LIBC.lib'
- 高级项目进行时10
- HGE基本DEMO
- HGE粒子系统DEMO
- 高级项目进行时11
- HGE 按下任意键监听
- 第二节课作业
- HGE 简单对话框组件
- HGE 改进的对话框组件
- HGE 地图编辑器之自动地图元件
- hgeGUI组件扩展基本步骤