正文

類型、變量與標(biāo)準(zhǔn)(14)

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


1.5.9  獲取用戶輸入

另一種給變量賦值的方式可以通過(guò)用戶輸入來(lái)實(shí)現(xiàn)。所以接下來(lái),程序基于用戶輸入對(duì)新變量fuel賦值,如下面一行代碼所示:

cin >> fuel;

cin和cout一樣是iostream中定義的對(duì)象,且都屬于std名稱空間。在cin后面跟上>>(提取運(yùn)算符)和變量名可以將值存儲(chǔ)在變量中。也可以使用cin和提取運(yùn)算符將用戶輸入存儲(chǔ)在其他基本數(shù)據(jù)類型的變量中。為了證明一切都正常工作,程序?qū)uel顯示給用戶。

1.5.10  為類型定義新名稱

可以為已有類型定義新的名稱。實(shí)際上,下面這行代碼就是這么做的:

typedef unsigned short int ushort;

這段代碼將標(biāo)識(shí)符ushort定義為類型unsigned short int的另外一個(gè)名稱。重命名已有類型的方法如下:在typedef后面跟上當(dāng)前類型,再跟上新名稱。typedef通常用于給比較長(zhǎng)的類型名定義較短的新名稱。

新類型名的使用和原始類型一樣。程序初始化了一個(gè)名為bonus的ushort型變量(其實(shí)就是unsigned short int型變量),然后顯示它的值。

1.5.11  類型的選擇

對(duì)于基本數(shù)據(jù)類型,有很多種選擇。但如何知道選用哪種類型呢?如果需要整型,最好使用int。int占據(jù)的內(nèi)存空間能被計(jì)算機(jī)最有效地處理。如果需要表示的整數(shù)比int型最大值還要大或者只表示正數(shù),那么請(qǐng)使用unsigned int。

如果內(nèi)存資源較少,可以使用存儲(chǔ)空間較小的類型。然而,對(duì)于大多數(shù)計(jì)算機(jī)來(lái)說(shuō),不會(huì)出現(xiàn)內(nèi)存不夠的問(wèn)題(在游戲控制臺(tái)或移動(dòng)設(shè)備上編程則另當(dāng)別論)。

最后,如果需要使用浮點(diǎn)數(shù),最好使用float。float占據(jù)的空間也能被計(jì)算機(jī)最有效地處理。

1.6  使用變量進(jìn)行算術(shù)運(yùn)算

一旦有了存儲(chǔ)值的變量,我們就希望在游戲的過(guò)程中改變它們的值:也許希望通過(guò)對(duì)擊敗Boss的玩家加分給予獎(jiǎng)勵(lì),或許又希望降低氣閥里的氧氣含量。之前介紹的(和一些新的)運(yùn)算符可以完成這些任務(wù)。

1.6.1  Game Stats 2.0程序簡(jiǎn)介

Game Stats 2.0程序?qū)Ρ硎居螒蚪y(tǒng)計(jì)值的變量進(jìn)行操作并顯示結(jié)果。程序運(yùn)行結(jié)果如圖1-6所示。

從Course Technology網(wǎng)站(www.courseptr.com/downloads)或本書合作網(wǎng)站(http://www. tupwk.com.cn/downpage)上可以下載到該程序的代碼。程序位于Chapter 1文件夾中,文件名為game_stats2.cpp。

圖1-6  使用不同方式更改每個(gè)變量

// Game Stats 2.0

// Demonstrates arithmetic operations with variables

#include <iostream>

using namespace std;

int main()

{

unsigned int score = 5000;

cout << "score: " << score << endl;

//altering the value of a variable

score = score + 100;

cout << "score: " << score << endl;

//combined assignment operator

score += 100;

cout << "score: " << score << endl;

//increment operators

int lives = 3;

++lives;

cout << "lives: "  << lives << endl;

lives = 3;

lives++;

cout << "lives: "  << lives << endl;

lives = 3;

int bonus = ++lives * 10;

cout << "lives, bonus = " << lives << ", " << bonus << endl;

lives = 3;

bonus = lives++ * 10;

cout << "lives, bonus = " << lives << ", " << bonus << endl;

//integer wrap arround

score = 4294967295;

cout << "\nscore: " << score << endl;

++score;

cout << "score: "   << score << endl;

return 0;

}

陷阱

當(dāng)編譯該程序時(shí),可能得到如“[Warning] this decimal constant is unsigned”這樣的警告。幸運(yùn)的是,警告不會(huì)阻止程序的編譯和運(yùn)行。該警告是整數(shù)溢出的結(jié)果。您也許希望在程序中避免整數(shù)溢出。然而,本程序有意使用了這種溢出并顯示這種情況的結(jié)果。1.6.5節(jié)在討論這段程序時(shí),將介紹關(guān)于整數(shù)溢出的知識(shí)。


上一章目錄下一章

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