點(diǎn)紙牌游戲C課程設(shè)計(jì)報(bào)告_第1頁(yè)
點(diǎn)紙牌游戲C課程設(shè)計(jì)報(bào)告_第2頁(yè)
點(diǎn)紙牌游戲C課程設(shè)計(jì)報(bào)告_第3頁(yè)
點(diǎn)紙牌游戲C課程設(shè)計(jì)報(bào)告_第4頁(yè)
點(diǎn)紙牌游戲C課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、鄭州輕工業(yè)學(xué)院課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱: 21點(diǎn)紙牌游戲 課 程 名 稱: 面向?qū)ο蟪绦蛟O(shè)計(jì)(C+) 姓 名: 謝先斌 院 (系): 計(jì)算機(jī)與通信工程學(xué)院 專業(yè)班級(jí): 計(jì)算機(jī)10-1 學(xué) 號(hào): 541007010144 指導(dǎo)教師: 王秉政、郭鋒 成 績(jī): 時(shí)間:2011年12月26日 至 2011年12月30日鄭州輕工業(yè)學(xué)院學(xué)生課程設(shè)計(jì)任務(wù)書(shū)一、 題目(任選一題) 21點(diǎn)紙牌游戲 公司員工管理系統(tǒng) 二、學(xué)生信息專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)號(hào) 541007010144 姓名 謝先斌 三、基本要求及約束條件(一)“21點(diǎn)紙牌游戲”設(shè)計(jì)1、需求及內(nèi)容21點(diǎn)是一個(gè)古老的撲克牌游戲,游戲規(guī)則是:各個(gè)參與者

2、設(shè)法使自己的牌達(dá)到總分21而不超過(guò)這個(gè)數(shù)值。撲克牌的分值取它們的面值,A充當(dāng)1分或者11分(由玩家自己選擇一種分值),J、Q和K人頭牌都是10分。莊家對(duì)付17個(gè)玩家。在一局開(kāi)始時(shí),包括莊家在內(nèi)的所有參與者都有兩張牌。玩家可以看到它們的所有牌以及總分,而專家有一張牌暫時(shí)是隱藏的。接下來(lái),只要愿意,各個(gè)玩家都有機(jī)會(huì)依次再拿一張牌。如果某個(gè)玩家的總分超過(guò)了21(稱為“引爆”),那么這個(gè)玩家就輸了。在所有玩家都拿了額外的牌后,莊家將顯示隱藏的牌。只有莊家的總分等于或小于16,那么他就必須再拿牌。如果莊家引爆了,那么還沒(méi)有引爆的所有玩家都將獲勝,引爆的玩家打成平局。否則,將余下的各玩家的總分與莊家的總分

3、做比較,如果玩家的總分大于莊家的總分,則玩家獲勝。如果二者的總分相同,則玩家與莊家打成平局。編寫(xiě)程序?qū)崿F(xiàn)游戲,計(jì)算機(jī)作為莊家,17個(gè)人作為普通玩家參與游戲。游戲程序運(yùn)行輸出如下所示:2、要點(diǎn)及分析首先定義表示撲克牌花色與面值的枚舉類型,這樣程序可讀性更強(qiáng),具體定義如下:typedef enum / 撲克牌面值:ACE(A),TWO(2)TEN(10),JACK(J), QUEEN(Q), KING(K)ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING RankType;typedef

4、 enum / 撲克牌花色:CLUBS(梅花), DIAMONDS(方塊), HEARTS(紅桃)和SPADES(黑桃)CLUBS, DIAMONDS, HEARTS, SPADES SuitType;struct Card/ 撲克牌結(jié)構(gòu)體RankType rank;/ 撲克牌面值SuitType suit;/ 撲克牌花色;(二)“公司員工管理系統(tǒng)”設(shè)計(jì)1、需求及內(nèi)容為了方便對(duì)公司員工基本信息進(jìn)行電子化管理,利用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)實(shí)現(xiàn)對(duì)員工信息的自動(dòng)化管理。系統(tǒng)應(yīng)能滿足如下的需求:Ø 增加員工數(shù)據(jù)信息Ø 更新員工數(shù)據(jù)信息Ø 查詢員工數(shù)據(jù)信息Ø 刪除員

5、工數(shù)據(jù)信息Ø 良好的人際交互界面、方便操作2、要求及要點(diǎn)分析設(shè)計(jì)一個(gè)虛基類Staff(員工),包括編號(hào)、姓名和年齡保護(hù)數(shù)據(jù)成員以及相關(guān)的成員函數(shù);由Staff派生出工程師類Engineer包含專業(yè)和職稱保護(hù)數(shù)據(jù)成員以及相關(guān)的成員函數(shù),再由Staff派生出領(lǐng)導(dǎo)類Leader,包括職務(wù)和部門(mén)保護(hù)數(shù)據(jù)成員以及相關(guān)的成員函數(shù);然后由Engineer和Leader類派生出主任工程師類Chairman。設(shè)計(jì)一個(gè)利用文件處理方式實(shí)現(xiàn)對(duì)公司人員(包括工程師、領(lǐng)導(dǎo)和主任工程師)進(jìn)行管理,具有增加數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)的功能。編寫(xiě)程序?qū)崿F(xiàn)游戲,按照要求實(shí)現(xiàn)程序。游戲程序運(yùn)行輸出如下所示:四、

6、難度分析及目標(biāo)該課題涉及到面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),難度適中,工作量適中。該次課程設(shè)計(jì)的總體目標(biāo)是培養(yǎng)學(xué)生對(duì)系統(tǒng)開(kāi)發(fā)總體流程的了解,經(jīng)過(guò)本次課程設(shè)計(jì),學(xué)生應(yīng)能對(duì)系統(tǒng)開(kāi)發(fā)的步驟和面向?qū)ο蟪绦蛟O(shè)計(jì)的思路有較好的理解和掌握。五、 設(shè)計(jì)要求、技術(shù)參數(shù)及設(shè)計(jì)規(guī)格1、設(shè)計(jì)的系統(tǒng)能夠運(yùn)行,提交壓縮程序;2、提交課程設(shè)計(jì)報(bào)告,按“課程設(shè)計(jì)報(bào)告要求”撰寫(xiě)3、程序設(shè)計(jì)環(huán)境為 Visual C+ 6.0和WindosXP或Windows2000。4、所有的設(shè)計(jì)工作需要同學(xué)自己真實(shí)地、獨(dú)立地完成。六、工作量日期任務(wù)描述2011.12.26查找相應(yīng)資料、閱讀程序;寫(xiě)出“21點(diǎn)紙牌”游戲或“公司員工管理系統(tǒng)”等的需求分析、算

7、法整體設(shè)計(jì)2011.12.26根據(jù)算法思想,完成算法整體設(shè)計(jì)描述整個(gè)游戲流程,設(shè)計(jì)相關(guān)程序的類(基類或派生類),編寫(xiě)程序2011.12.28程序代碼的設(shè)計(jì)與實(shí)現(xiàn)2011.12.28程序代碼的設(shè)計(jì)與實(shí)現(xiàn)、測(cè)試2011.12.30完成課程設(shè)計(jì)文檔書(shū)寫(xiě)、作品成績(jī)?cè)u(píng)定七、考核形式、考核時(shí)間、考核指標(biāo)及成績(jī)?cè)u(píng)定課程設(shè)計(jì)成績(jī)由下面構(gòu)成:課程設(shè)計(jì)紀(jì)律、課程設(shè)計(jì)態(tài)度和平時(shí)表現(xiàn)占20%;課程設(shè)計(jì)結(jié)果占50%;課程設(shè)計(jì)報(bào)告占30%??己诵问剑?)老師每日對(duì)學(xué)生的考察、評(píng)估和考核;2)最后對(duì)課程設(shè)計(jì)項(xiàng)目完成的質(zhì)量進(jìn)行考核和驗(yàn)收。完 成 期 限: 2011年12月30日 指導(dǎo)教師簽章: 王秉政、郭鋒 專業(yè)負(fù)責(zé)人簽章:

8、 教學(xué)院長(zhǎng)簽章: 年 月 日一、 需求說(shuō)明21點(diǎn)紙牌游戲是一個(gè)很具有使用價(jià)值的撲克牌小游戲。首先,要從21點(diǎn)游戲的古老的起源說(shuō)起,21點(diǎn)小游戲的起源與民間,其主要是用于打發(fā)人們休閑使用,茶錢(qián)飯后經(jīng)??吹饺藗?cè)谕?。再次?1點(diǎn)游戲也是能滿足人們賭性心理的一款首選游戲,且所需條件簡(jiǎn)單只需一副撲克牌而已,易于被人們接受。綜上,編寫(xiě)21點(diǎn)游戲的前途是十分光明的,其應(yīng)用空間又是十分寬廣的。當(dāng)今計(jì)算機(jī)已經(jīng)在全國(guó)大部分地區(qū)得到了廣泛的普及,為滿足人們對(duì)21點(diǎn)紙牌游戲的軟件使用需求,21點(diǎn)游戲的軟件開(kāi)發(fā)又是一件十分急迫又有前景的開(kāi)發(fā)。隨著社會(huì)的發(fā)展科技的進(jìn)步,計(jì)算機(jī)的應(yīng)用在社會(huì)各領(lǐng)域中都得到了普及。越來(lái)越多的

9、人都感受到利用計(jì)算機(jī)來(lái)玩各種游戲的快捷,且更能滿足人們消耗業(yè)余時(shí)間的心理。21點(diǎn)游戲是一款典型的紙牌游戲,其使用面積極廣,應(yīng)用人說(shuō)極多,界面要求低,是一款不錯(cuò)的上機(jī)編寫(xiě)程序?qū)嵗K奖愕膶?shí)現(xiàn)玩家通過(guò)界面來(lái)控制游戲的是否要牌,是否開(kāi)始新游戲等一系列操作??傮w任務(wù)是實(shí)現(xiàn)了21點(diǎn)游戲的的系統(tǒng)化規(guī)范化和自動(dòng)化。二、 功能描述 21點(diǎn)紙牌游戲最多允許7位玩家,在開(kāi)始時(shí)每一位玩家都先發(fā)兩張牌,只有莊家的第一張牌隱藏,其余的牌都是明著的,接下來(lái),只要愿意,各個(gè)玩家都有機(jī)會(huì)依次再拿一張牌。如果某個(gè)玩家的總分超過(guò)了21(稱為“引爆”),那么這個(gè)玩家就輸了。在所有玩家都拿了額外的牌后,莊家將顯示隱藏的牌。只有莊

10、家的總分等于或小于16,那么他就必須再拿牌。如果莊家引爆了,那么還沒(méi)有引爆的所有玩家都將獲勝,引爆的玩家打成平局。否則,將余下的各玩家的總分與莊家的總分做比較,如果玩家的總分大于莊家的總分,則玩家獲勝。如果二者的總分相同,則玩家與莊家打成平局。三、 系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)軟件規(guī)格要求合理,基于C+程序設(shè)計(jì),通過(guò)類與對(duì)象的編寫(xiě),最終在有限空間達(dá)到效果最優(yōu)化。2.1設(shè)計(jì)要求用C+實(shí)現(xiàn) “21點(diǎn)游戲系統(tǒng)”。2.2系統(tǒng)功能: (1)系統(tǒng)啟動(dòng)后,出現(xiàn)歡迎界面,滿足人機(jī)交互的命令行設(shè)計(jì)。 (2)能實(shí)現(xiàn)基本信息的輸入與游戲開(kāi)始分開(kāi)。開(kāi)始時(shí)輸入?yún)⒓佑螒虻娜藬?shù)(17人),單擊回車(chē)后進(jìn)入按要求依次輸入玩家的姓名。 (3)

11、能實(shí)現(xiàn)開(kāi)始后顯示每一個(gè)玩家的牌點(diǎn)大小,當(dāng)然莊家的首張牌是隱藏的。 (4)能實(shí)現(xiàn)決定是否要繼續(xù)發(fā)牌。通過(guò)(y, n)?問(wèn)題選項(xiàng)的提問(wèn)與回答,來(lái)完成是否繼續(xù)發(fā)牌的游戲要求 (5)能實(shí)現(xiàn)自主完成莊家的發(fā)牌與顯示最終大小工作。通過(guò)所有玩家都已決定是否要發(fā)牌后,最終可以完成對(duì)莊家的是否發(fā)牌和顯示最終牌點(diǎn)大小。 (6)能實(shí)現(xiàn)系統(tǒng)自動(dòng)比較大小,并通過(guò)界面最終顯示到屏幕上。 (7)能實(shí)現(xiàn)在一次游戲結(jié)束后詢問(wèn)是否要進(jìn)行下一次的游戲。 (8)能實(shí)現(xiàn)在游戲結(jié)束后提示游戲結(jié)束界面。2.3系統(tǒng)性能:(1)時(shí)間特性需求在網(wǎng)絡(luò)連接正常的情況下,查詢響應(yīng)時(shí)間為秒級(jí)。(2) 靈活性可以自主控制玩家的個(gè)數(shù),及讓玩家有足夠的自主選

12、擇全來(lái)決定是否要牌和進(jìn)行下一盤(pán)游戲。(3)可用性軟件應(yīng)該盡可能的一目了然,使一般用戶能夠使用。 (4)安全性本游戲不會(huì)出現(xiàn)安全問(wèn)題,所有程序代碼不會(huì)被360,金山,qq關(guān)鍵等判為危險(xiǎn)程序。(5) 可維護(hù)性(6) 應(yīng)用程序的維護(hù)當(dāng)用戶使用本套職工信息系統(tǒng)軟件時(shí),遇到了軟件本身的邏輯錯(cuò)誤時(shí),應(yīng)當(dāng)有軟件的維護(hù)人員對(duì)軟件進(jìn)行修改。(7)可轉(zhuǎn)移、可轉(zhuǎn)換性Visual Studio及C編程語(yǔ)言的兼容性很高,在windows95/98. Windows NT. windows2000. windows XP等操作系統(tǒng)都可以直接運(yùn)行。輸入項(xiàng):用戶通過(guò)軟件輸入必要的信息,然后保存到數(shù)據(jù)到內(nèi)存,所輸入的信息是經(jīng)過(guò)

13、需求分析限定的內(nèi)容。輸出項(xiàng):本游戲信息系統(tǒng)軟件會(huì)將所有需要瀏覽的數(shù)據(jù)顯示在屏幕上,以便使玩家能夠清晰的看到自己的操作。算法: 1)將用戶輸入的數(shù)據(jù),將數(shù)據(jù)存放到數(shù)組中。2)將數(shù)組中的數(shù)據(jù),提取到用戶界面中。3)按條件依次填入數(shù)組中的數(shù)據(jù)。4)按條件選擇執(zhí)行。注釋設(shè)計(jì):盡可能的將軟件中插入注釋語(yǔ)句,使語(yǔ)句功能明了。制作的時(shí)候應(yīng)該制作兩分,一份是標(biāo)有注釋語(yǔ)句的代碼,用來(lái)給維護(hù)人員、測(cè)試人員和開(kāi)發(fā)人員了解開(kāi)發(fā)過(guò)程所用,另一份是不帶有注釋語(yǔ)句的代碼,用來(lái)最后實(shí)際應(yīng)用當(dāng)中,這樣可以充分的利用有限的時(shí)間,降低客戶的計(jì)算機(jī)打開(kāi)系統(tǒng)功能的時(shí)間,提高客戶的使用速度。限制條件:限制必要的條件,以排除由于用戶的誤操

14、作造成不必要的錯(cuò)誤。測(cè)試計(jì)劃:在軟件編輯的工作進(jìn)行當(dāng)中,測(cè)試人員便要開(kāi)始制定測(cè)試計(jì)劃,主要通過(guò)大量的重復(fù)測(cè)試來(lái)達(dá)到測(cè)試軟件的目的。3.1設(shè)計(jì)思路和管理框架(1)思路: 通過(guò)類,數(shù)組的應(yīng)用搭建子函數(shù),通過(guò)main 函數(shù)調(diào)用各個(gè)分模塊實(shí)現(xiàn)系統(tǒng)的主要功能。(2)管理框架流程圖:開(kāi)始游戲輸入玩家人數(shù)輸入玩家姓名輸入y/n輸入n不要輸入y繼續(xù)下一位玩家輸入輸入完后輸出玩家輸贏是否繼續(xù),請(qǐng)輸入y/nn 結(jié)束退出游戲輸入y 繼續(xù)繼續(xù)游戲功能實(shí)現(xiàn)模塊圖(1) 錄入信息,玩家人數(shù)及姓名。 (2) 錄入后,系統(tǒng)自動(dòng)發(fā)牌,并顯示莊家(第一張牌隱藏)及各個(gè)玩家的牌點(diǎn)大小及總點(diǎn)數(shù)。(3)依次詢問(wèn)玩家是否要牌,并y決定要

15、牌,你n決定不要牌。如果哪一位玩家總點(diǎn)數(shù)超過(guò)21點(diǎn),玩家引爆。(4)所有玩家輸入完后,則會(huì)顯示輸贏信息,表示一盤(pán)游戲結(jié)束。(5)輸入y表示繼續(xù)下一盤(pán)游戲,n則停止游戲。3.2各功能模塊1. 交互式菜單開(kāi)始系統(tǒng)自動(dòng)進(jìn)入用戶操作界面。2. 輸入玩家人數(shù)輸入有多少人參加游戲,然后依次輸入玩家姓名,之后熊、通會(huì)自動(dòng)開(kāi)始游戲并顯示每一位玩家的信息。3.玩家決定是否要牌按照提示信息,填寫(xiě)y/n ,決定是否要牌,完成后系統(tǒng)自動(dòng)顯示輸贏,并詢問(wèn)是否下一盤(pán)游戲。4.繼續(xù)下一盤(pán)游戲輸入y后,系統(tǒng)進(jìn)入下一盤(pán)游戲,詢問(wèn)參加游戲人數(shù),其他信息同2-3步驟。5.繼續(xù)游戲根據(jù)提示繼續(xù)下一盤(pán)游戲游戲。6.退出游戲輸入n,將退

16、出游戲。四、 課程設(shè)計(jì)心得通過(guò)這次課程設(shè)計(jì),我真正的明白了什么是計(jì)算機(jī)的軟件的開(kāi)發(fā)及軟件開(kāi)發(fā)的整個(gè)過(guò)程,并更加深刻的體會(huì)到作為當(dāng)代大學(xué)生的我們就應(yīng)該體會(huì)到學(xué)以致用的重要價(jià)值。課程設(shè)計(jì)期間,雖說(shuō)時(shí)間極短,但其中能學(xué)到的知識(shí)不僅僅能滿足我對(duì)軟件開(kāi)發(fā)的好奇,更重要的是讓我第一次看到了從入大學(xué)到現(xiàn)在一年半來(lái)對(duì)所學(xué)知識(shí)的應(yīng)用與收獲,可謂是受益匪淺。這幾天的學(xué)習(xí)所學(xué)到的知識(shí)正是這一年對(duì)C+學(xué)習(xí)一個(gè)全面覆蓋與整體回顧,也加深了我對(duì)C+知識(shí)的理解,積累了軟件開(kāi)發(fā)的寶貴經(jīng)驗(yàn),相信在以后的學(xué)習(xí)中我定能夠汲取今天的經(jīng)驗(yàn)鋪墊明天的殿堂。從入學(xué)第一學(xué)期接觸到C語(yǔ)言,到C#在到今天的C+,每一次的學(xué)習(xí)都各有側(cè)重點(diǎn)。C+給

17、我最大的感觸就是他對(duì)面向?qū)ο蟮脑O(shè)計(jì),通過(guò)我對(duì)封裝、多態(tài)、繼承的一步一步深入地了解,使我對(duì)所學(xué)的計(jì)算機(jī)編程有了一個(gè)更加深入的認(rèn)識(shí)。這次的實(shí)習(xí)更是給了我一次上機(jī)檢驗(yàn)的機(jī)會(huì),通過(guò)編寫(xiě)一次21點(diǎn)游戲的機(jī)會(huì)窺視整個(gè)編程世界的靈魂。在這次課程設(shè)計(jì)之前我對(duì)軟件項(xiàng)目沒(méi)有一點(diǎn)眉目,只是在河科大的同學(xué)那里接觸到一些他們的軟件作品。終于在這次的上機(jī)實(shí)習(xí)中扣開(kāi)了我編些實(shí)用軟件的大門(mén),激發(fā)了我的軟件開(kāi)發(fā)的樂(lè)趣。21點(diǎn)游戲是一個(gè)古老的紙牌游戲,其開(kāi)發(fā)過(guò)程的整體規(guī)劃是一件很重要的工作。以前總以為只要掌握了對(duì)C+的基本知識(shí)就可以滿足未來(lái)對(duì)就業(yè)的需求,但這次我錯(cuò)了。經(jīng)歷了這次課程設(shè)計(jì),讓我明白一個(gè)完整的項(xiàng)目所要的基本步驟并不是

18、想象中的那么簡(jiǎn)單。從軟件的需求到系統(tǒng)的布局等一項(xiàng)項(xiàng)功能的具體實(shí)現(xiàn),在通過(guò)對(duì)所學(xué)類的一次次的應(yīng)用及理解的不斷加深,每一步都要經(jīng)過(guò)自己的不懈努力并感受著收獲的快樂(lè)。在最后的界面的整體設(shè)計(jì)上,我更是體會(huì)到與老師同學(xué)交流的重要性。更進(jìn)一步的了解到以后要維持一個(gè)團(tuán)隊(duì)團(tuán)結(jié)的重要性。雖說(shuō)這次界面設(shè)計(jì)是現(xiàn)學(xué)現(xiàn)用,但在其中更是給自己不少啟發(fā),使我明白在以后的工作中所遇到的每一件事物并不是自己所熟悉的,因此我們就應(yīng)該加強(qiáng)對(duì)新知識(shí)的接受理解應(yīng)用的能力。自己的能力總是有限的,在今后的生活中我要加強(qiáng)與同學(xué)老師的交流,懂得分享的重要性,并從中進(jìn)一步加強(qiáng)對(duì)團(tuán)結(jié)的理解。最后,我應(yīng)該感謝老師同學(xué)的指導(dǎo)與幫助及學(xué)院提供的這次難得

19、的實(shí)習(xí)機(jī)會(huì)。五、 附錄(代碼)/GameOf21Point.h#include<iostream.h>#define LEN_OF_MAX_NAME 21typedef enum/撲克牌面值:ACE(A),TWO(2)TEN(10),JACK(J),QUEEN(Q),KING(K)ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KINGRankType;typedef enum/撲克牌的花色:CAUBS(梅花),DIAMONDS(方塊),HEARTS(紅桃),SPADES(黑桃)CL

20、UBS, DIAMONDS, HEARTS, SPADESSuitType;struct CardRankType rank;SuitType suit;class GameOf21Pointprivate:Card d52;int dealPos;Card hands821;int numOfCard8;char name8LEN_OF_MAX_NAME;int numOfPlayer;void Shuffle();int GetTotalScore(Card hand21, int n);void ShowStatus(int num,bool hideFirstCardAndTotalS

21、core=false);Card DealOneCard()return ddealPos+;public:GameOf21Point();virtualGameOf21Point();void Game();/GameOf21Point.cpp#include<iostream.h>#include<time.h>#include<stdlib.h>#include<string.h>#include "GameOf21Point.h"ostream &operator<<(ostream &o,

22、const Card &c)if(c.suit=CLUBS)o<<"梅花"else if(c.suit=DIAMONDS)o<<"方塊"else if(c.suit=HEARTS)o<<"紅桃"else if(c.suit=SPADES)o<<"KING"if(c.rank=ACE)o<<"A"else if(c.rank=JACK)o<<"J"else if(c.rank=QUEEN)o<

23、<"Q"else if(c.rank=KING)o<<"K"else cout<<(int)c.rank;return o;void GameOf21Point:Shuffle()srand(time(NULL);for(int i=51;i>0;i-)int pos=rand()%(i+1);Card t;t=dpos;dpos=di;di=t;int GameOf21Point:GetTotalScore(Card hand21, int n)int p;int totalScore=0;for(p=0;p<

24、n;p+)if(handp.rank=ACE)totalScore+=1;else if(handp.rank=TEN | handp.rank=JACK | handp.rank=QUEEN |handp.rank=KING)totalScore+=10;elsetotalScore+=(int)handp.rank;for(p=0;p<n && totalScore>21;p+)if(handp.rank=ACE)totalScore-=10;return totalScore;void GameOf21Point:ShowStatus(int n,bool h

25、ideFirstCardAndTotalScore)cout<<"tt"<<namen<<":"if(hideFirstCardAndTotalScore)cout<<" <隱藏>"elseif(handsn0.suit=CLUBS)cout<<" 梅花"else if(handsn0.suit=DIAMONDS)cout<<" 方塊"else if(handsn0.suit=HEARTS)cout<<

26、;" 紅桃"else if(handsn0.suit=SPADES)cout<<" 黑桃"if(handsn0.rank=ACE)cout<<"A"else if(handsn0.rank=JACK)cout<<"J"else if(handsn0.rank=QUEEN)cout<<"Q"else if(handsn0.rank=KING)cout<<"K"else cout<<(int)handsn0.

27、rank;for(int i=1;i<numOfCardn;i+)if(handsni.suit=CLUBS)cout<<" 梅花"else if(handsni.suit=DIAMONDS)cout<<" 方塊"else if(handsni.suit=HEARTS)cout<<" 紅桃"else if(handsni.suit=SPADES)cout<<" 黑桃"if(handsni.rank=ACE)cout<<"A"els

28、e if(handsni.rank=JACK)cout<<"J"else if(handsni.rank=QUEEN)cout<<"Q"else if(handsni.rank=KING)cout<<"K"else cout<<(int)handsni.rank;if(!hideFirstCardAndTotalScore)cout<<" 總分?jǐn)?shù)"<<GetTotalScore(handsn,numOfCardn);cout<<en

29、dl;if(GetTotalScore(handsn,numOfCardn)>21)cout<<"tt"<<namen<<"引爆!"<<endl;GameOf21Point:GameOf21Point()int curPos=0;dealPos=0;int i=0;for(int suitpos=0;suitpos<4;suitpos+)for(int rankPos=1;rankPos<=13;rankPos+)dcurPos.suit=(SuitType)suitpos;dcurPos

30、.rank=(RankType)rankPos;curPos+;cout<<endl;cout<<"ttt"<<" 21點(diǎn)游戲 歡迎您的使用! "<<endl<<endl;cout<<" ="<<endl<<endl;cout<<"tt多少人加入游戲?<17>:"cin>>numOfPlayer;while(numOfPlayer<1|numOfPlayer>7)cout&

31、lt;<"tt玩家人數(shù)限定在17人,請(qǐng)重新輸入人數(shù)<17>:"cin>>numOfPlayer;for(i=0;i<=numOfPlayer;i+)numOfCardi=0;strcpy(name0,"莊家");cout<<endl;for(i=1;i<=numOfPlayer;i+)cout<<"tt輸入第"<<i<<"位玩家的姓名:"cin>>namei;cout<<endl;cout<<

32、;"tttt游戲開(kāi)始!"<<endl<<endl;void GameOf21Point:Game()int i,j;Shuffle();for(i=1;i<=2;i+)hands0numOfCard0=DealOneCard();numOfCard0+;ShowStatus(0,true);for(i=1;i<=numOfPlayer;i+)for(j=0;j<2;j+)handsinumOfCardi=DealOneCard();numOfCardi+;for(i=1;i<=numOfPlayer;i+)ShowStatus

33、(i);cout<<endl;for(i=1;i<=numOfPlayer;i+)char ch;cout<<"tt"<<namei<<",你想要一張牌嗎<y, n>?"cin>>ch;while(ch!='y'&&ch!='n')cout<<"tt"<<namei<<",你輸入錯(cuò)誤,請(qǐng)重新輸入<y, n>?"cin>>ch;whi

34、le(GetTotalScore(handsi,numOfCardi)<=21&&ch='y')handsinumOfCardi=DealOneCard();numOfCardi+;ShowStatus(i);if(GetTotalScore(handsi,numOfCardi)>21)break;cout<<"tt"<<namei<<",你還想再要一張牌嗎<y, n>?"cin>>ch;ShowStatus(0);while(GetTotalScore(hands0,numOfCard0)<=16)hands0numOfCard0=DealOneCard();numOfCard0+;ShowStatus(0);cout<<endl;if(GetTotalScore(hands0,numOfCard0)>21)for(i=1;i<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論