-
大小: 1.32MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-21
- 語言: C/C++
- 標(biāo)簽:
資源簡介
/* 定義游戲引擎類GameEngine */
class GameEngine
{
/* 聲明不公開的成員變量 */
protected:
static GameEngine * m_pGameEngine; //靜態(tài)成員,用于記錄指向引擎自身的指針
HINSTANCE m_hInstance; //當(dāng)前程序?qū)嵗浔? HWND m_hWnd; //當(dāng)前程序?qū)嵗翱诰浔? TCHAR m_szWindowClass[50]; //窗口類名稱
TCHAR m_szTitle[50]; //窗口標(biāo)題
WORD m_wIcon; //程序圖標(biāo)(大)
WORD m_wSmallIcon; //程序圖標(biāo)(小)
int m_nWidth,m_nHeight; //游戲窗口寬度和高度
BOOL m_bFullScreen; //是否全屏顯示
int m_nColorbit; //色彩模式(32位、24位或16位)
int m_nFrameDelay; //游戲幀延時(shí),即兩次循環(huán)的時(shí)間間隔
long m_lNextGameTick; //下一次游戲循環(huán)執(zhí)行時(shí)間
long m_lStartTime; //記錄游戲開始時(shí)間
BOOL m_bPause; //游戲是否處理于暫停狀態(tài)
/* 聲明成員方法 */
public:
//聲明構(gòu)造函數(shù)
GameEngine(HINSTANCE hInstance, //設(shè)置程序句柄
LPTSTR szWindowClass, //設(shè)置窗口名稱
LPTSTR szTitle, //設(shè)置窗口標(biāo)題
WORD wIcon,

代碼片段和文件信息
/*************************************
游戲引擎源文件?GameEngine.cpp
*************************************/
#include?“GameEngine.h“
/*?導(dǎo)入游戲引擎中需要用到的頭文件和相關(guān)庫文件?*/
#include?“winuser.h“
#include?“mmsystem.h“
#include?“wingdi.h“
#pragma???comment(lib“user32.lib“)
#pragma???comment(lib“winmm.lib“)
#pragma???comment(lib“gdi32.lib“)
/*?初始化游戲引擎靜態(tài)指針?*/
GameEngine?*?GameEngine::m_pGameEngine=NULL;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*?游戲引擎構(gòu)造函數(shù)?*/
GameEngine::GameEngine(HINSTANCE?hInstanceLPTSTR?szWindowClassLPTSTR?sztitleWORD?wIconWORD?wSmallIconBOOL?bFullScreenint?nColorbitint?nWidthint?nHeight)
{
m_pGameEngine=this; //將當(dāng)前實(shí)例賦給靜態(tài)指針m_pGameEngine
m_hInstance=hInstance; //設(shè)置引擎實(shí)例為當(dāng)前程序?qū)嵗浔?br/>
lstrcpy(m_szWindowClassszWindowClass); //將窗口類注冊名稱賦給_szWindowClass
lstrcpy(m_sztitlesztitle); //將標(biāo)題賦給m_sztitle
/*?設(shè)置屏幕模式和大小?*/
m_bFullScreen=bFullScreen;
m_nColorbit=nColorbit;
m_nWidth=nWidth;
m_nHeight=nHeight;
/*設(shè)置圖標(biāo)和光標(biāo)*/
m_wIcon=wIcon;
m_wSmallIcon=wSmallIcon;
/*?記錄游戲開始時(shí)間和下次循環(huán)時(shí)間?*/
m_lStartTime=timeGetTime();
m_lNextGameTick=m_lStartTime;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*?游戲引擎析構(gòu)函數(shù)?*/
GameEngine::~GameEngine()?{???}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*?創(chuàng)建游戲窗口?*/
BOOL GameEngine::CreateGameWindow()
{
WNDCLASSEX?wcApp; //聲明窗口類
HWND?hWnd=NULL; //聲明程序主窗口句柄
int?nPosXnPosYnWndWidthnWndHeight; //聲明窗口位置和大小變量
DWORD?dwWinstyle; //聲明窗口風(fēng)格變量
wcApp.cbSize=sizeof(wcApp);
//給窗口屬性賦值
wcApp.lpszClassName=m_szWindowClass; //設(shè)置窗口類名
wcApp.style=CS_HREDRAW; //定義窗口風(fēng)格
wcApp.lpfnWndProc=WndProc; //指定消息處理函數(shù)
wcApp.hInstance=m_hInstance; //指定義窗口應(yīng)用程序的句柄
wcApp.cbWndExtra=0;
wcApp.cbClsExtra=0;
//加載程序圖標(biāo)(大)
wcApp.hIconSm=LoadIcon(m_hInstance?MAKEINTRESOURCE(m_wIcon));
//加載程序圖標(biāo)(小)
wcApp.hIcon=LoadIcon(m_hInstance?MAKEINTRESOURCE(m_wSmallIcon));
wcApp.hCursor=LoadCursor(NULLIDC_ARROW); //加載鼠標(biāo)樣式
wcApp.hbrBackground=(HBRUSH)(COLOR_WINDOW); //設(shè)置窗口背景色
wcApp.lpszMenuName=NULL; //設(shè)置窗口沒有菜單
RegisterClassEx(&wcApp); //注冊窗口類
/*使用DEVMODE結(jié)構(gòu)設(shè)置屏幕顯示模式*/
DEVMODE?DevMode;
ZeroMemory(&DevMode?sizeof(DevMode)); //將結(jié)構(gòu)DevMode的內(nèi)存清零
DevMode.dmSize=sizeof(DevMode); //設(shè)置DevMode存儲(chǔ)空間以存儲(chǔ)屏幕屬性數(shù)據(jù)
//用當(dāng)前屏幕顯示模式設(shè)置填充DevMode
EnumDisplaySettings(NULLENUM_CURRENT_SETTINGS&DevMode);
BOOL?bDisplayChange=FALSE; //標(biāo)識(shí)屏幕顯示模式是否改變
//如果屏幕顯示模式位數(shù)與游戲不同
if( DevMode.dmBitsPerPel!=(unsigned?long)m_nColorbit)
{
DevMode.dmBitsPerPel=m_nColorbit; //設(shè)置顯示模式位數(shù)
bDisplayChange=TRUE;
}
//如果全屏狀態(tài)下的屏幕尺寸與窗口不同;或屏幕尺寸小于窗口都需要重設(shè)顯示模式
if((m_bFullScreen?&&?m_nWidth!=GetSystemMetrics(SM_CXSCREEN))
||?m_nWidth>GetSystemMetrics(SM_CXSCREEN)) ?
{
DevMode.dmPelsWidth=m_nWidth;
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????24033??2008-09-01?22:32??GameStart\Debug\GameEngine.obj
?????文件????3547206??2008-09-01?22:32??GameStart\Debug\GameStart.exe
?????文件?????263584??2008-09-01?22:32??GameStart\Debug\GameStart.ilk
?????文件??????22873??2008-09-01?22:32??GameStart\Debug\GameStart.obj
?????文件????2785988??2008-09-01?20:57??GameStart\Debug\resource.res
?????文件?????148480??2008-09-01?22:32??GameStart\Debug\vc60.idb
?????文件??????77824??2008-09-01?22:32??GameStart\Debug\vc60.pdb
?????文件????????814??2009-11-17?17:16??GameStart\Debug\BuildLog.htm
?????文件???????8157??2008-09-01?22:32??GameStart\GameEngine.cpp
?????文件???????3771??2008-09-01?22:32??GameStart\GameEngine.h
?????文件???????4459??2008-09-01?22:28??GameStart\GameStart.cpp
?????文件???????4413??2008-07-29?02:07??GameStart\GameStart.dsp
?????文件????????543??2008-07-11?23:42??GameStart\GameStart.dsw
?????文件????????351??2008-09-01?22:27??GameStart\GameStart.h
?????文件?????106496??2008-09-01?22:33??GameStart\GameStart.opt
?????文件???????1281??2008-09-01?22:32??GameStart\GameStart.plg
?????文件???????3262??2008-06-26?22:34??GameStart\resource\Arrow.cur
?????文件?????430974??2008-07-26?14:59??GameStart\resource\GameIcon.ico
?????文件????1920056??2008-06-26?22:17??GameStart\resource\GameStart.bmp
????..A.SH.??????6144??2008-07-26?15:47??GameStart\resource\Thumbs.db
?????文件????????772??2008-07-26?22:22??GameStart\resource.h
?????文件???????2158??2008-08-17?00:10??GameStart\resource.rc
?????文件??????27648??2009-11-17?17:16??GameStart\GameStart.ncb
?????文件???????5351??2009-11-17?17:06??GameStart\GameStart.vcproj
?????文件????????907??2009-11-17?17:06??GameStart\GameStart.sln
????..A..H.??????9728??2009-11-17?17:16??GameStart\GameStart.suo
?????目錄??????????0??2009-06-04?10:26??GameStart\Debug
?????目錄??????????0??2009-06-04?10:26??GameStart\resource
?????目錄??????????0??2009-06-04?10:26??GameStart
-----------?---------??----------?-----??----
............此處省略2個(gè)文件信息
評論
共有 條評論