W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
本章選擇紙牌作為研究對象的原因是,牌堆是一個很明顯的紙牌向量的應(yīng)用。 這是創(chuàng)建一副52張牌組成的新牌堆的代碼:
apvector<Card> deck (52);
這是對象的狀態(tài)圖:
三個點(diǎn)代表我不想畫出的48張牌。記住,我們尚未初始化紙牌實(shí)例變量。有些環(huán)境中,它們會初始化為0,就像圖中這樣,而在其他環(huán)境中它們可能包含任何可能的值。
一種初始化方法是,以一個Card對象為第二個參數(shù)調(diào)用向量的構(gòu)造函數(shù):
Card aceOfSpades (3, 1);
apvector<Card> deck (52, aceOfSpades);
這段代碼創(chuàng)建了一副由52張同樣的牌組成的牌堆,就像變魔術(shù)用的特殊牌。當(dāng)然,創(chuàng)建一副由52張不同的牌組成的牌堆才更有意義。這可以使用嵌套循環(huán)實(shí)現(xiàn)。
外層循環(huán)枚舉了花色,從0到3。對于每種花色,內(nèi)部循環(huán)枚舉了牌的大小,從1到13。因?yàn)橥獠垦h(huán)迭代4詞,內(nèi)部循環(huán)迭代13詞,循環(huán)體總的執(zhí)行次數(shù)是52次(即13乘以4)。
int i = 0;
for (int suit = 0; suit <= 3; suit++) {
for (int rank = 1; rank <= 13; rank++) {
deck[i].suit = suit;
deck[i].rank = rank;
i++;
}
}
我們使用變量i記錄牌堆中要使用的下一張牌。
注意,我們可以把數(shù)組元素選擇語法([]操作符)和對象的實(shí)例變量選擇語法(點(diǎn)操作符)組合起來。比如表達(dá)式deck[i].suit意思是“牌堆中第i張卡的花色”。
作為練習(xí),請把構(gòu)建牌堆的代碼封裝為buildDeck函數(shù),該函數(shù)不接受任何參數(shù)并返回一個完全填充的紙牌向量。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: