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