W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在第13.6節(jié)我們編寫(xiě)了一個(gè)洗牌算法的偽代碼。假設(shè)shuffleDeck函數(shù)實(shí)現(xiàn)洗牌功能,其參數(shù)為一個(gè)牌堆,我們就可以這樣創(chuàng)建牌堆并洗牌:
Deck deck; // 創(chuàng)建一個(gè)標(biāo)準(zhǔn)的52張牌的牌堆
deck.shuffle (); // 洗牌
然后,使用subdeck函數(shù)來(lái)分幾手牌:
Deck hand1 = deck.subdeck (0, 4);
Deck hand2 = deck.subdeck (5, 9);
Deck pack = deck.subdeck (10, 51);
這段代碼將前5張紙牌分到一個(gè)牌堆中,接下來(lái)的5張分到一個(gè)牌堆中,剩下的作為一個(gè)牌堆。
在考慮發(fā)牌的時(shí)候,你是不是認(rèn)為我們應(yīng)該像實(shí)際游戲中常用的那樣輪流著每次給每個(gè)玩家發(fā)一張牌?我也這樣想過(guò),但我意識(shí)到,對(duì)計(jì)算機(jī)程序而言這是不必要的。輪流發(fā)牌有兩個(gè)目的,一是為了降低洗牌缺陷帶來(lái)的問(wèn)題,再就是使發(fā)牌者更難作弊。而這些對(duì)計(jì)算機(jī)而言都不是問(wèn)題。
這個(gè)例子是個(gè)有益的提醒,那就是要小心工程隱喻的一點(diǎn)危險(xiǎn)之處:有時(shí)我們給計(jì)算機(jī)施加了不必要的限制,或者期望計(jì)算機(jī)缺乏的功能,就是因?yàn)槲覀冚p率地將隱喻擴(kuò)展到了崩潰的邊緣。一定要小心誤導(dǎo)性的類(lèi)比。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: