正文

開發(fā)游戲引擎(3)

Windows移動游戲開發(fā)實戰(zhàn) 作者:(美)Adam Dawes


 

4.2  引擎的實現

我們現在開始對這些類進行開發(fā),首先要編寫的是CGameEngineBase類。在現在的階段,不必擔心這些類是否具有意義。在本章的后文中將使用該引擎創(chuàng)建一些示例。以后我們有機會利用該引擎創(chuàng)建復雜的操作,所以在示例游戲中所用的代碼盡量簡單。

4.2.1  CgameEngineBase類

下面對CGameEngineBase類的大概情況進行介紹:

● 目標  游戲引擎的核心;為管理游戲及其中的對象提供函數。

● 類型  抽象基類。

● 父類  非繼承類。

● 子類  特定圖形API的游戲實現,例如GDI引擎。

● 主要功能

● Prepare  為引擎初始化數據。

● Reset  為一個新游戲初始化數據。

● Advance  步進游戲中的所有元素。

● Update  更新游戲狀態(tài)。

● Render  繪制游戲。

該類被創(chuàng)建為抽象類;我們不會為該類創(chuàng)建實際的實例,因為它沒有包含足夠的功能來支持我們的游戲開發(fā)。但是,它將成為一個創(chuàng)建GDI游戲類與OpenGL游戲類的構建塊(實際上將來還可以應用于其他渲染技術)。

因此我們會提供一套核心函數集,所有從它繼承的游戲引擎都要實現這些功能。并且提供一套虛函數集,使得各種繼承類能對這些虛函數用自己的方式進行重寫以執(zhí)行特定任務。

所有繼承而來的引擎類有一些東西是通用的,即要對游戲運行窗體進行訪問??赡苄枰獧z測窗體的尺寸來判斷游戲元素是否即將跑到邊界上,或者要訪問窗體中的控件是否位于窗體內。

為了保證總有一個窗體可用,我們?yōu)樵擃悇?chuàng)建帶有參數的構造函數,將所需要的窗體信息傳遞進去。該類一開始非常簡單,如程序清單4-1所示。

程序清單4-1  最初的CGameEngineBase類

namespace GameEngineCh4

{

public abstract class CGameEngineBase

{

/// <summary>

/// Store a reference to the form against which this GameEngine 

/// instance is running

/// </summary>

private Form _gameForm;

/// <summary>

/// Class constructor -- require an instance of the form that we will 

/// be running

/// within to be provided.

/// </summary>

/// <param name="gameForm"></param>

public CGameEngineBase(Form gameForm)

{

// Store a reference to the form

_gameForm = gameForm;

}

}

}


上一章目錄下一章

Copyright ? 讀書網 hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號