C++游戏基本框架,实现双缓冲功能!
标签:
•
文件类型: .rar
•
文件大小: 1.32MB
•
下载次数: 1
•
/* 定义游戏引擎类GameEngine */
class GameEngine
{
/* 声明不公开的成员变量 */
protected:
static GameEngine * m_pGameEngine; //静态成员,用于记录指向引擎自身的指针
HINSTANCE m_hInstance; //当前程序实例句柄
HWND m_hWnd; //当前程序实例窗口句柄
TCHAR m_szWindowClass[50]; //窗口类名称
TCHAR m_szTitle[50]; //窗口标题
WORD m_wIcon; //程序图标(大)
WORD m_wSmallIcon; //程序图标(小)
int m_nWidth,m_nHeight; //游戏窗口宽度和高度
BOOL m_bFullScreen; //是否全屏显示
int m_nColorbit; //色彩模式(32位、24位或16位)
int m_nFrameDelay; //游戏帧延时,即两次循环的时间间隔
long m_lNextGameTick; //下一次游戏循环执行时间
long m_lStartTime; //记录游戏开始时间
BOOL m_bPause; //游戏是否处理于暂停状态
/* 声明成员方法 */
public:
//声明构造函数
GameEngine(HINSTANCE hInstance, //设置程序句柄
LPTSTR szWindowClass, //设置窗口名称
LPTSTR szTitle, //设置窗口标题
WORD wIcon,
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24033 2008-09-01 22:32 GameStartDebugGameEngine.obj
文件 3547206 2008-09-01 22:32 GameStartDebugGameStart.exe
文件 263584 2008-09-01 22:32 GameStartDebugGameStart.ilk
文件 22873 2008-09-01 22:32 GameStartDebugGameStart.obj
文件 2785988 2008-09-01 20:57 GameStartDebug
esource.res
文件 148480 2008-09-01 22:32 GameStartDebugvc60.idb
文件 77824 2008-09-01 22:32 GameStartDebugvc60.pdb
文件 814 2009-11-17 17:16 GameStartDebugBuildLog.htm
文件 8157 2008-09-01 22:32 GameStartGameEngine.cpp
文件 3771 2008-09-01 22:32 GameStartGameEngine.h
文件 4459 2008-09-01 22:28 GameStartGameStart.cpp
文件 4413 2008-07-29 02:07 GameStartGameStart.dsp
文件 543 2008-07-11 23:42 GameStartGameStart.dsw
文件 351 2008-09-01 22:27 GameStartGameStart.h
文件 106496 2008-09-01 22:33 GameStartGameStart.opt
文件 1281 2008-09-01 22:32 GameStartGameStart.plg
文件 3262 2008-06-26 22:34 GameStart
esourceArrow.cur
文件 430974 2008-07-26 14:59 GameStart
esourceGameIcon.ico
文件 1920056 2008-06-26 22:17 GameStart
esourceGameStart.bmp
..A.SH. 6144 2008-07-26 15:47 GameStart
esourceThumbs.db
文件 772 2008-07-26 22:22 GameStart
esource.h
文件 2158 2008-08-17 00:10 GameStart
esource.rc
文件 27648 2009-11-17 17:16 GameStartGameStart.ncb
文件 5351 2009-11-17 17:06 GameStartGameStart.vcproj
文件 907 2009-11-17 17:06 GameStartGameStart.sln
..A..H. 9728 2009-11-17 17:16 GameStartGameStart.suo
目录 0 2009-06-04 10:26 GameStartDebug
目录 0 2009-06-04 10:26 GameStart
esource
目录 0 2009-06-04 10:26 GameStart
----------- --------- ---------- ----- ----
............此处省略2个文件信息
/*************************************
游戏引擎源文件 GameEngine.cpp
*************************************/
#include “GameEngine.h“
/* 导入游戏引擎中需要用到的头文件和相关库文件 */
#include “winuser.h“
#include “mmsystem.h“
#include “wingdi.h“
#pragma comment(lib“user32.lib“)
#pragma comment(lib“winmm.lib“)
#pragma comment(lib“gdi32.lib“)
/* 初始化游戏引擎静态指针 */
GameEngine * GameEngine::m_pGameEngine=NULL;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 游戏引擎构造函数 */
GameEngine::GameEngine(HINSTANCE hInstanceLPTSTR szWindowClassLPTSTR sztitleWORD wIconWORD wSmallIconBOOL bFullScreenint nColorbitint nWidthint nHeight)
{
m_pGameEngine=this; //将当前实例赋给静态指针m_pGameEngine
m_hInstance=hInstance; //设置引擎实例为当前程序实例句柄
lstrcpy(m_szWindowClassszWindowClass); //将窗口类注册名称赋给_szWindowClass
lstrcpy(m_sztitlesztitle); //将标题赋给m_sztitle
/* 设置屏幕模式和大小 */
m_bFullScreen=bFullScreen;
m_nColorbit=nColorbit;
m_nWidth=nWidth;
m_nHeight=nHeight;
/*设置图标和光标*/
m_wIcon=wIcon;
m_wSmallIcon=wSmallIcon;
/* 记录游戏开始时间和下次循环时间 */
m_lStartTime=timeGetTime();
m_lNextGameTick=m_lStartTime;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 游戏引擎析构函数 */
GameEngine::~GameEngine() { }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 创建游戏窗口 */
BOOL GameEngine::CreateGameWindow()
{
WNDCLASSEX wcApp; //声明窗口类
HWND hWnd=NULL; //声明程序主窗口句柄
int nPosXnPosYnWndWidthnWndHeight; //声明窗口位置和大小变量
DWORD dwWinstyle; //声明窗口风格变量
wcApp.cbSize=sizeof(wcApp);
//给窗口属性赋值
wcApp.lpszClassName=m_szWindowClass; //设置窗口类名
wcApp.style=CS_HREDRAW; //定义窗口风格
wcApp.lpfnWndProc=WndProc; //指定消息处理函数
wcApp.hInstance=m_hInstance; //指定义窗口应用程序的句柄
wcApp.cbWndExtra=0;
wcApp.cbClsExtra=0;
//加载程序图标(大)
wcApp.hIconSm=LoadIcon(m_hInstance MAKEINTRESOURCE(m_wIcon));
//加载程序图标(小)
wcApp.hIcon=LoadIcon(m_hInstance MAKEINTRESOURCE(m_wSmallIcon));
wcApp.hCursor=LoadCursor(NULLIDC_ARROW); //加载鼠标样式
wcApp.hbrBackground=(HBRUSH)(COLOR_WINDOW); //设置窗口背景色
wcApp.lpszMenuName=NULL; //设置窗口没有菜单
RegisterClassEx(&wcApp); //注册窗口类
/*使用DEVMODE结构设置屏幕显示模式*/
DEVMODE DevMode;
ZeroMemory(&DevMode sizeof(DevMode)); //将结构DevMode的内存清零
DevMode.dmSize=sizeof(DevMode); //设置DevMode存储空间以存储屏幕属性数据
//用当前屏幕显示模式设置填充DevMode
EnumDisplaySettings(NULLENUM_CURRENT_SETTINGS&DevMode);
BOOL bDisplayChange=FALSE; //标识屏幕显示模式是否改变
//如果屏幕显示模式位数与游戏不同
if( DevMode.dmBitsPerPel!=(unsigned long)m_nColorbit)
{
DevMode.dmBitsPerPel=m_nColorbit; //设置显示模式位数
bDisplayChange=TRUE;
}
//如果全屏状态下的屏幕尺寸与窗口不同;或屏幕尺寸小于窗口都需要重设显示模式
if((m_bFullScreen && m_nWidth!=GetSystemMetrics(SM_CXSCREEN))
|| m_nWidth>GetSystemMetrics(SM_CXSCREEN))
{
DevMode.dmPelsWidth=m_nWidth;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24033 2008-09-01 22:32 GameStartDebugGameEngine.obj
文件 3547206 2008-09-01 22:32 GameStartDebugGameStart.exe
文件 263584 2008-09-01 22:32 GameStartDebugGameStart.ilk
文件 22873 2008-09-01 22:32 GameStartDebugGameStart.obj
文件 2785988 2008-09-01 20:57 GameStartDebug
esource.res
文件 148480 2008-09-01 22:32 GameStartDebugvc60.idb
文件 77824 2008-09-01 22:32 GameStartDebugvc60.pdb
文件 814 2009-11-17 17:16 GameStartDebugBuildLog.htm
文件 8157 2008-09-01 22:32 GameStartGameEngine.cpp
文件 3771 2008-09-01 22:32 GameStartGameEngine.h
文件 4459 2008-09-01 22:28 GameStartGameStart.cpp
文件 4413 2008-07-29 02:07 GameStartGameStart.dsp
文件 543 2008-07-11 23:42 GameStartGameStart.dsw
文件 351 2008-09-01 22:27 GameStartGameStart.h
文件 106496 2008-09-01 22:33 GameStartGameStart.opt
文件 1281 2008-09-01 22:32 GameStartGameStart.plg
文件 3262 2008-06-26 22:34 GameStart
esourceArrow.cur
文件 430974 2008-07-26 14:59 GameStart
esourceGameIcon.ico
文件 1920056 2008-06-26 22:17 GameStart
esourceGameStart.bmp
..A.SH. 6144 2008-07-26 15:47 GameStart
esourceThumbs.db
文件 772 2008-07-26 22:22 GameStart
esource.h
文件 2158 2008-08-17 00:10 GameStart
esource.rc
文件 27648 2009-11-17 17:16 GameStartGameStart.ncb
文件 5351 2009-11-17 17:06 GameStartGameStart.vcproj
文件 907 2009-11-17 17:06 GameStartGameStart.sln
..A..H. 9728 2009-11-17 17:16 GameStartGameStart.suo
目录 0 2009-06-04 10:26 GameStartDebug
目录 0 2009-06-04 10:26 GameStart
esource
目录 0 2009-06-04 10:26 GameStart
----------- --------- ---------- ----- ----
............此处省略2个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)