正文

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

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


1.5.9  獲取用戶輸入

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

cin >> fuel;

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

1.5.10  為類型定義新名稱

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

typedef unsigned short int ushort;

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

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

1.5.11  類型的選擇

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

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

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

1.6  使用變量進行算術(shù)運算

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

1.6.1  Game Stats 2.0程序簡介

Game Stats 2.0程序?qū)Ρ硎居螒蚪y(tǒng)計值的變量進行操作并顯示結(jié)果。程序運行結(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  使用不同方式更改每個變量

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


上一章目錄下一章

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