正文

for循環(huán)、字符串與數(shù)組(4)

通過游戲編程實戰(zhàn)教新手學(xué)C++編程 作者:(美)Michael Dawson


3.2  理解對象

到目前為止,已經(jīng)介紹如何使用變量存儲單條信息,以及如何使用運(yùn)算符和函數(shù)對這些變量進(jìn)行操作。但是游戲中出現(xiàn)的大多數(shù)事物(譬如說外星飛行器)則是對象。它們是被封裝起來的、組合了屬性(如能量等級)和能力(如實施武器攻擊)的聚合體。通常情況下,將這些屬性和能力彼此分開討論是沒有意義的。

幸運(yùn)的是,大多數(shù)現(xiàn)代編程語言允許使用軟件對象(經(jīng)常簡稱為對象)組合數(shù)據(jù)與函數(shù)。對象的數(shù)據(jù)元素稱為數(shù)據(jù)成員,而對象的函數(shù)稱為成員函數(shù)。具體例子可以想象一下外星飛行器。外星飛行器可能是游戲程序員定義的一種稱為Spacecraft的新類型的對象。它包含一個表示能量等級的數(shù)據(jù)成員和一個實施武器攻擊的成員函數(shù)。實際上,對象的能量等級可能存儲在int型的數(shù)據(jù)成員energy中,且其攻擊的能力定義在名為fireWeapons()的成員函數(shù)中。

同一類型的每個對象都有同樣的基本結(jié)構(gòu),因此每個對象都有相同的數(shù)據(jù)成員和成員函數(shù)的集合。然而,作為個體,每個對象的數(shù)據(jù)成員都有其各自的值。如果現(xiàn)在有一個由5個外星飛行器組成的飛行中隊,每個飛行器都有其各自的能量等級。其中一個飛行器的能量等級可能為75,而另一個可能僅為10。即使兩個飛行器的能量等級相同,但它們還是獨立的。它們也可以通過調(diào)用其成員函數(shù)fireWeapons()讓各自的武器開火。外星飛行器的概念如圖3-2所示。

圖3-2  這種外星飛行器定義的表示方式說明每個對象都有一個名為energy的數(shù)據(jù)成員和一個名為fireWeapons()的成員函數(shù)

對象的妙處在于并不需要知道其實現(xiàn)細(xì)節(jié)就能使用它們,就像不必在開車之前學(xué)會制造汽車一樣。我們只需要知道對象的數(shù)據(jù)成員和成員函數(shù),就像只需要知道汽車的方向盤、油門和剎車在哪里一樣。

對象可以存儲在變量中,就像內(nèi)置數(shù)據(jù)類型一樣。因此,一個外星飛行器對象可以存儲在Spacecraft類型的變量中??梢酝ㄟ^將成員選擇運(yùn)算符(.)置于對象變量名之后來訪問數(shù)據(jù)成員和成員函數(shù)。如果希望外星飛行器ship只有在能量等級大于10時開火,可以按如下方式編寫代碼:

// ship is an object of Spacecraft type

if (ship.energy > 10)

{

ship.fireWeapons()

}

ship.energy訪問對象ship的數(shù)據(jù)成員energy,而ship.fireWeapons()調(diào)用對象的成員函數(shù)fireWeapons()。

盡管到現(xiàn)在還沒有介紹如何創(chuàng)建自己的新類型(如外星飛行器),但可以使用前面已定義好的對象類型。這就是接下來要介紹的內(nèi)容。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號