人工洗牌課程設(shè)計---模擬人工洗牌

人工洗牌課程設(shè)計---模擬人工洗牌

ID:9506166

大?。?03.00 KB

頁數(shù):11頁

時間:2018-05-01

人工洗牌課程設(shè)計---模擬人工洗牌_第1頁
人工洗牌課程設(shè)計---模擬人工洗牌_第2頁
人工洗牌課程設(shè)計---模擬人工洗牌_第3頁
人工洗牌課程設(shè)計---模擬人工洗牌_第4頁
人工洗牌課程設(shè)計---模擬人工洗牌_第5頁
資源描述:

《人工洗牌課程設(shè)計---模擬人工洗牌》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、課程設(shè)計報告設(shè)計題目:模擬人工洗牌學(xué)生姓名:專業(yè):班級:學(xué)號:完成日期:2012年7月一:需求和規(guī)格說明:(一)題目要求:擬要求編寫一個人工洗牌的程序,將洗好的牌分別發(fā)給四個人。而且要求用結(jié)構(gòu)card來描述一張牌的花色和數(shù)字(suit,num),利用C++的隨機(jī)函數(shù)voidsrand(unsignedseed)和intrand(void)來模擬人工洗牌的過程,最后將洗好的52張牌按順序分別發(fā)給四個人。而且對每個人的牌要按橋牌的規(guī)則輸出。即一個人的牌要先按牌的花色(順序依次為梅花,方塊,紅心和黑桃)進(jìn)行分類,同一類牌的內(nèi)部要再按A,K,Q,J,…,3,2牌的大小順序排列

2、。另外發(fā)牌應(yīng)按四個人的順序依次分發(fā)。(二)設(shè)計:1:設(shè)計思想:第一:根據(jù)題目要求,設(shè)置一個結(jié)構(gòu)體card,因為一張牌有花色和數(shù)字的不同,所以結(jié)構(gòu)體card包括了suit和num兩個成員,其中suit通過取0,1,2,3來分別表示梅花,方塊,紅心和黑桃四種花色;num取值2-10、J(11)、Q(12)、K(13)、A(14)來表示牌上的數(shù)字。因此一張牌可以由suit和num的組合來唯一確定。第二:洗牌(shuffle)。由于洗牌時牌的順序是隨機(jī)的,所以用到了voidsrand(unsignedseed)和intrand(void)函數(shù)。通過srand函數(shù)設(shè)置rand函

3、數(shù)所用得到隨機(jī)數(shù)產(chǎn)生算法的種子值來不斷改變rand函數(shù)的隨機(jī)數(shù)的啟動種子值,以產(chǎn)生最佳的隨機(jī)數(shù)。又由于相同的種子后面的rand()函數(shù)會出現(xiàn)一樣的隨機(jī)數(shù)。所以為了防止隨機(jī)數(shù)每次重復(fù)常常使用系統(tǒng)時間來初始化,即使用time函數(shù)來獲得系統(tǒng)的時間,將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型再傳給srand函數(shù),即srand((unsigned)time(&t));而在這里所用的則是srand(time(NULL)),直接傳入一個空指針。用0到51的整數(shù)分別對應(yīng)52張牌隨機(jī)產(chǎn)生0到51之間的一個整數(shù),將該整數(shù)所對應(yīng)的那張牌與0對應(yīng)的那張牌交換,然后隨機(jī)產(chǎn)生1到51之間的

4、一個整數(shù),重復(fù)該過程,每次隨機(jī)數(shù)的最大范圍減1,直到洗牌完畢。第三:排序(sort)。排序包括按花色排序和按大小排序。在按花色排序中,利用sort函數(shù),根據(jù)冒泡排序法,從第一張牌開始依次與其后面的牌比較suit的大小,若第一張牌的suit大于后面的,則兩者交換,否則繼續(xù)。同理:在按照大小排序時,按照冒泡排序法,大的值在前,小的在后。而在花色排好之后,只需要在某種花色的內(nèi)部進(jìn)行大小排序即可。即函數(shù)sortNum().第四:牌的顯示(show())。牌的顯示包括花色和數(shù)字?;ㄉ胹witch函數(shù)分為四種情況分別輸出。數(shù)字則直接定義一個字符型數(shù)組,通過數(shù)組nums來表示輸出

5、即可。第五:主函數(shù):(1)設(shè)置四個數(shù)組A[u],B[u],C[u],D[u]來反別表示四個人的牌。然后模擬出52張牌。(2)洗牌。(3)發(fā)牌:發(fā)牌時是根據(jù)memcpy函數(shù)隨機(jī)將牌發(fā)給四個人。(4)排序。將牌發(fā)好之后再根據(jù)排序函數(shù)分別對四個人的牌進(jìn)行花色和大小的排序。(5)輸出。即用show函數(shù)將牌輸出。結(jié)束!Structcardintsuit;intnum;系統(tǒng)程序設(shè)計結(jié)構(gòu)圖:inti,n;Cardc;voidshuffle(Card*card)Srand(time(NULL))intrand(void)memcpy(void*u,void*v,unsignedint

6、n)inti,j,k;cardt;voidsort(Card*card,intsize,CardTypestype)memcpy(void*u,void*v,Unsignedintn)inti;intj=0;intA[4={0,0,0,0}voidsortNum(Card*card)voidsort(Card*card,intsize,Num)Voidshow(intsuit,intnum)switchcharnums[];switvhsuit;屬性和類型定義:類名成員類別類型成員名描述Card花色intsuit表示四種花色;當(dāng)取0,1,2,3是分別表示梅花,方塊,紅

7、心,黑桃數(shù)字intnum表示牌上的數(shù)字;取值為:2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13),A(14)類名成員類型類型成員名描述voidmain()屬性constintnum一副牌的總數(shù)52constintu每個玩家的牌數(shù)enumCardType表示一張牌的兩個屬性(suit,num)ints代表花色(從0到3表示四種花色)intn代表牌上的數(shù)字(2-10,J(11),Q(12),K(13),A(14))inti表示牌的數(shù)目(0-51)方法voidshuffle洗牌程序voidsort排序程序voidsortNum排序程

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。