游戲框架的示例,我確實不知如何寫才能引人入勝,因為它實在是一些框框條條的東西,并不像圖形引擎哪樣注重效果的表現(xiàn),所以,希望讀者能耐心地看完所有示例介紹,望能從中找到你需要的功能。
注:以下每個示例均基于上一示例基礎(chǔ)上修改,為此,相同部分不再重復(fù)。
Sample01
簡介:
Hello World!
該例范展示了OGF框架的最基本架構(gòu)及如何基于OGF創(chuàng)建你的游戲項目,運行后會在屏幕中心顯示一段經(jīng)典的"Hello World!"字樣。
1.創(chuàng)建一個window項目.
2.設(shè)置項目引用以下庫文件(項目->屬性->鏈接器->輸入->附加依賴項),路徑改為您的OGF目錄下的LIB目錄
../../lib/hge.lib
../../lib/hgehelp.lib
../../lib/ObjectComD.lib
../../lib/FrameComD.lib
../../lib/GameFrameD.lib
../../lib/ServiceEnginerD.lib
3.創(chuàng)建一個GameFrame類,使該類基于CGameFrameDlg類.(以后可重載該類的方法,以改變OGF框架的屬性及流程)
4.創(chuàng)建一個MyGameBody類,使該類基于CGameBody類(此為您的游戲執(zhí)行主體)
5.重載OnInitialize()方法(原型:bool __cdecl OnInitialize();)
6.在OnInitialize()方法內(nèi)加入如下內(nèi)容:
//如果沒有自定義的流程規(guī)劃,則系統(tǒng)需調(diào)用以下語句:
__super::OnInitialize();
//創(chuàng)建文本對象
CGameObjectText* pGOText = new CGameObjectText();
SIZE siSize;
POINT piPos;
siSize.cx = siSize.cy = 300;
piPos.x = 350;piPos.y = 300;
pGOText->Create("Text", siSize, "font1.fnt");
pGOText->SetText("Hello World!");
pGOText->MoveTo(piPos);
//添加文本對象至指定環(huán)節(jié)下的默認(rèn)視圖的默認(rèn)場景的默認(rèn)層下
m_pCurrentSection->GetGameView()->GetBy("default")->GetBy("default")->Add((IGameObject*)pGOText->QueryInterface(IID_IGameObject, VER_IGameObject), "Text");
return true;
7.在WinMain函數(shù)之上定義OGF框架的全局變量:theGame
extern GAME_FRAME_CLASS CGameFrameDlg* theGame;
8.在WinMain函數(shù)體內(nèi)添加如下代碼:(必須引用OGF框架的GameFrame.h和MyGameBody.h文件)
//創(chuàng)建GameFrame對象
theGame = new CGameFrame();
//創(chuàng)建自定義的游戲主體
CMyGameBody* pGameBody = new CMyGameBody();
//設(shè)置游戲主體的回調(diào)鉤子
theGame->SetGameBodySink((IGameBody *)pGameBody->QueryInterface(IID_IGameBody, VER_IGameBody));
//啟動框架
theGame->GameStart();
//注銷框架(連帶框架內(nèi)管理的所有對象一起注銷,所以游戲主體的指針不需要使用delete刪除)
delete theGame;
return 0;
9.運行前確保拷貝以下DLL至項目輸出目錄
hge.dll
bass.dll
ObjectComD.dll
FrameCom.dll
ServiceEnginer.dll
ServiceEnginerD.dll
GameFrame.dll
10.確保以下資源文件在輸出目錄中
font1.fnt
font1.png
10.編譯并運行項目
運行結(jié)果:
