日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

正文

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

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


 

4.2  引擎的實現(xiàn)

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

4.2.1  CgameEngineBase類

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

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

● 類型  抽象基類。

● 父類  非繼承類。

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

● 主要功能

● Prepare  為引擎初始化數(shù)據(jù)。

● Reset  為一個新游戲初始化數(shù)據(jù)。

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

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

● Render  繪制游戲。

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

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

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

為了保證總有一個窗體可用,我們?yōu)樵擃悇?chuàng)建帶有參數(shù)的構造函數(shù),將所需要的窗體信息傳遞進去。該類一開始非常簡單,如程序清單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 ? 讀書網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號