版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)說(shuō)明書(shū)</b></p><p> 題 目:“21”點(diǎn)紙牌游戲</p><p><b> 學(xué)生姓名: </b></p><p><b> 學(xué) 院:理學(xué)院</b></p><p><b> 班 級(jí):</b&g
2、t;</p><p><b> 指導(dǎo)教師: </b></p><p> 二〇一六年一月二十二日</p><p><b> 引言</b></p><p> 本次課程設(shè)計(jì)利用計(jì)算機(jī)高級(jí)語(yǔ)言C++進(jìn)行簡(jiǎn)單編程,實(shí)現(xiàn)簡(jiǎn)易的C++程序計(jì)算器的編程和運(yùn)行。通過(guò)Microsoft Visual C++ 6
3、.0軟件可以進(jìn)行C++程序編譯,通過(guò)模塊之間關(guān)系的確定及各模塊功能,最后設(shè)計(jì)一個(gè)簡(jiǎn)單的操作界面實(shí)現(xiàn)游戲。本系統(tǒng)通過(guò)C++高級(jí)語(yǔ)言進(jìn)行編程,并設(shè)計(jì)了簡(jiǎn)單明了的操作界面。簡(jiǎn)單的界面能給用戶(hù)更好的操作體驗(yàn),更直接而充分的掌握本程序的一些應(yīng)用和功能。通過(guò)直觀的方式,最終實(shí)現(xiàn)C++設(shè)計(jì)的應(yīng)用程序——“21點(diǎn)”紙牌游戲。本次課設(shè)所做程序雖然只是一個(gè)簡(jiǎn)單的C++計(jì)算器程序,但是基本的應(yīng)用功能都已具備,可以更好的用在實(shí)際應(yīng)用中。C++這個(gè)詞在中國(guó)大陸的
4、程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。它是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。本學(xué)期我們開(kāi)設(shè)了“C++語(yǔ)言程序設(shè)計(jì)”這門(mén)課程。隨著老師的講解及對(duì)這門(mén)語(yǔ)言的深入認(rèn)識(shí)和學(xué)習(xí),我們已經(jīng)對(duì)這門(mén)計(jì)算機(jī)語(yǔ)言有了一定的</p>
5、;<p> 第一章 系統(tǒng)開(kāi)發(fā)環(huán)境的簡(jiǎn)介和特點(diǎn)</p><p> 1.1 開(kāi)發(fā)環(huán)境的簡(jiǎn)介</p><p> Microsoft Visual C++ 6.0,簡(jiǎn)稱(chēng)VC6.0,是微軟推出的一款C++編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。自1993年Microsoft公司推出Visual C++1
6、.0后,隨著其新版本的不斷問(wèn)世,Visual C++已成為專(zhuān)業(yè)程序員進(jìn)行軟件開(kāi)發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C++6.0為平臺(tái)。Visual C++6.0不僅是一個(gè)C++ 編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)
7、發(fā)環(huán)境(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類(lèi)向?qū)lass Wizard等開(kāi)發(fā)工具。 這些組件通過(guò)一個(gè)名為Developer Studio的組件集成為和諧的開(kāi)</p><p> 1.2 開(kāi)發(fā)環(huán)境的特點(diǎn)</p><p> 由于C++是由C語(yǔ)言發(fā)展起來(lái)的
8、,也支持C語(yǔ)言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對(duì)于模版的支持比較差?,F(xiàn)在最新補(bǔ)丁為SP6,推薦安裝,否則易出現(xiàn)編譯時(shí)假死狀態(tài)和有些功能不可用的情況。同時(shí),6.0版本對(duì)windows7和windows8的兼容性較差</p><p> 第二章 系統(tǒng)分析</p><p><b> 2.1系統(tǒng)定位</b></p><p>
9、;<b> 2.1.1系統(tǒng)介紹</b></p><p> 本系統(tǒng)定位簡(jiǎn)單的“21點(diǎn)”紙牌游戲小應(yīng)用程序,暫時(shí)只考慮單機(jī)環(huán)境下的實(shí)現(xiàn);操作系統(tǒng)選擇目前常用的Windows 7。系統(tǒng)界面力求簡(jiǎn)潔、易用,在標(biāo)準(zhǔn)化的基礎(chǔ)上考慮界面的美觀和新穎</p><p> 2.1.2系統(tǒng)面向的用戶(hù)群體</p><p> 系統(tǒng)面向所有人群,凡是懂得
10、計(jì)算機(jī)基本操作的人都可以對(duì)本程序進(jìn)行應(yīng)用。簡(jiǎn)單明了的操作界面能夠讓用戶(hù)迅速的適應(yīng)并掌握。</p><p><b> 2.2系統(tǒng)需求</b></p><p> 2.2.1系統(tǒng)的功能性需求</p><p> ?。?)系統(tǒng)啟動(dòng)后,出現(xiàn)歡迎界面,滿(mǎn)足人機(jī)交互的命令行設(shè)計(jì)。</p><p> ?。?)能實(shí)現(xiàn)基本信息的輸入與游戲
11、開(kāi)始分開(kāi)。</p><p> ?。?)能實(shí)現(xiàn)開(kāi)始后顯示每一個(gè)玩家的牌點(diǎn)大小,當(dāng)然莊家的首張牌是隱藏的。</p><p> ?。?)能實(shí)現(xiàn)決定是否要繼續(xù)發(fā)牌。。</p><p> 通過(guò)(1, 2)?問(wèn)題選項(xiàng)的提問(wèn)與回答,來(lái)完成是否繼續(xù)發(fā)牌的游戲要求</p><p> (5)能實(shí)現(xiàn)自主完成莊家的發(fā)牌與顯示最終大小工作。</p>
12、<p> 通過(guò)所有玩家都已決定是否要發(fā)牌后,最終可以完成對(duì)莊家的是否發(fā)牌和顯示最終牌點(diǎn)大小。</p><p> ?。?)能實(shí)現(xiàn)系統(tǒng)自動(dòng)比較大小,并通過(guò)界面最終顯示到屏幕上</p><p> (7)能實(shí)現(xiàn)在游戲結(jié)束后提示游戲結(jié)束界面。</p><p> 2.2.2系統(tǒng)的非功能性需求</p><p> (1)用戶(hù)界面需求:簡(jiǎn)潔、
13、易用、易懂,美觀、大方、標(biāo)準(zhǔn),具備一定的兼容性。</p><p> (2)系統(tǒng)開(kāi)發(fā)平臺(tái):Windows 7 Microsoft Visual C++ 6.0 </p><p> (3)軟件質(zhì)量需求:易用、健壯、兼容性好、運(yùn)行穩(wěn)定、有一定安全保障</p><p> 2.3技術(shù)可能性分析<
14、/p><p> 本系統(tǒng)設(shè)計(jì)的核心部分就是通過(guò)C++語(yǔ)言的文件處理模塊,通過(guò)相應(yīng)代碼、類(lèi)實(shí)現(xiàn)游戲,該程序是模擬古老的21點(diǎn)撲克牌游戲,實(shí)現(xiàn)1對(duì)1的人機(jī)大戰(zhàn)。要求游戲過(guò)程中任意一方牌的點(diǎn)數(shù)之和超過(guò)21點(diǎn),則自動(dòng)出局;在不超過(guò)21點(diǎn)的情況下,玩家下注由電腦隨機(jī)發(fā)牌與莊家比累積牌的點(diǎn)數(shù)的大小,大者為贏家??梢缘贸鼋Y(jié)論:該系統(tǒng)的實(shí)現(xiàn)在技術(shù)上是可行的。</p><p> 第三章 總體結(jié)構(gòu)設(shè)計(jì)<
15、;/p><p> 3.1 “21”點(diǎn)紙牌游戲簡(jiǎn)介</p><p> 21點(diǎn)一般用到1-8副牌。莊家給每個(gè)玩家發(fā)兩張牌,牌面朝上;給自己發(fā)兩張牌,一張牌面朝上,一張牌面朝下。K、Q、J和10牌都算作10點(diǎn)。其余所有2至9牌均按其原面值計(jì)算。如果玩家拿到的前兩張牌是一張A和一張10點(diǎn)牌,就擁有天生21點(diǎn)(Blackjack);此時(shí),如果莊家沒(méi)有黑杰克,玩家就能贏得1.5倍的賭金(2賠3)。沒(méi)
16、有黑杰克的玩家可以繼續(xù)拿牌,以使總點(diǎn)數(shù)盡可能接近但不超過(guò)21點(diǎn);如果超過(guò)21點(diǎn),玩家就會(huì)“爆(Bust)”并輸?shù)糍€金。如果莊家的總點(diǎn)數(shù)等于或少于16點(diǎn),則必須拿牌(Hit);如果莊家的總點(diǎn)數(shù)等于或多于17點(diǎn),則必須停牌(Stand)。</p><p> 3.2 “21”點(diǎn)紙牌游戲總體功能流程圖</p><p> 游戲界面——》輸入賭注——》選擇要牌——》開(kāi)始游戲——》退出</p
17、><p> 第四章 程序設(shè)計(jì)思路及測(cè)試結(jié)果</p><p> 4.1 設(shè)計(jì)步驟和關(guān)鍵代碼</p><p> 第一步:首先創(chuàng)建項(xiàng)目名稱(chēng)(game2);</p><p> 第二步:往項(xiàng)目中添加需要的源文件,和頭文件;</p><p> (一) 先定義全局變量:</p><p> #inc
18、lude<iostream></p><p> #include<string></p><p> #include<time.h></p><p> using namespace std;</p><p> #define NUM 1000</p><p> int j
19、=2;//定義為全局變量</p><p> int randNum[NUM];//因?yàn)閞and()函數(shù)有一定的缺陷,所以在程序中定義了randNum數(shù)組來(lái)存放隨機(jī)數(shù)</p><p> //即使使用了種子函數(shù)srand(),由于程序運(yùn)行時(shí)間比較短,也不太好設(shè)置種子。因此使用數(shù)組來(lái)存放隨機(jī)數(shù)</p><p> ?。ǘ﹦?chuàng)建一個(gè)poker類(lèi),構(gòu)造函數(shù)poker;<
20、;/p><p> class Poker</p><p><b> {private:</b></p><p> int poker[53]; //撲克</p><p> int pokerValue[53]; //撲克代表的數(shù)值</p><p> string pokerName[
21、53]; //撲克名</p><p> int money; //玩家錢(qián)數(shù) </p><p> int bet; //玩家的賭注</p><p> int pokerF[5]; //玩家手中的牌 F:Farmer L:Landlord</p><p> int pokerL[5]; //莊家手中的牌 F:F
22、armer L:Landlord</p><p> int pokerNumF; //玩家手中的牌數(shù)</p><p> int pokerNumL; //莊家手中的牌數(shù)</p><p><b> public:</b></p><p> Poker(); //構(gòu)造函數(shù),對(duì)牌初始化&
23、lt;/p><p> void initPoker(); //洗牌,在每輪游戲開(kāi)始前進(jìn)行</p><p> string getPokerF(); //用字符串的形式返回玩家的牌</p><p> string getPokerL(); //用字符串的形式返回莊家的牌</p><p> int getSumF(); //
24、返回玩家牌的點(diǎn)數(shù),用以判斷是否超過(guò)21點(diǎn)</p><p> int getSumL(); //返回莊家牌的點(diǎn)數(shù)</p><p> void farmerAsk(); //玩家要牌</p><p> void landlordAsk(); //莊家要牌</p><p> void inpu
25、tBet(); //玩家輸入賭注</p><p> void newGame(); //開(kāi)始新游戲</p><p> void landlordProcess(); //在玩家不要牌時(shí)進(jìn)行處理</p><p> };Poker::Poker()</p><p> {poker[
26、0]=0;</p><p> for(int i=1;i<=13;i++) //|</p><p> {poker[i]=i; //|用構(gòu)造函數(shù)對(duì)牌初始化</p><p> poker[i+13]=i; //|</p><p> poker[i+26]=i; //|</
27、p><p> poker[i+39]=i; //|</p><p><b> }//for結(jié)束</b></p><p> pokerValue[0]=0;</p><p> for(i=1;i<=52;i++)</p><p> {if(poker[i]<=10)
28、 pokerValue[i]=poker[i];</p><p> else pokerValue[i]=10;</p><p> }pokerName[0]="";</p><p> for(i=0;i<4;i++)</p><p> {pokerName[1+13*i]=&quo
29、t;A";</p><p> pokerName[2+13*i]="2";</p><p> pokerName[3+13*i]="3";</p><p> pokerName[4+13*i]="4";</p><p> pokerName[5+13*i]=&quo
30、t;5";</p><p> pokerName[6+13*i]="6";</p><p> pokerName[7+13*i]="7";</p><p> pokerName[8+13*i]="8";</p><p> pokerName[9+13*i]=&quo
31、t;9";</p><p> pokerName[10+13*i]="10";</p><p> pokerName[11+13*i]="J";</p><p> pokerName[12+13*i]="Q";</p><p> pokerName[13+13*i]
32、="K";</p><p> }money=200; //玩家開(kāi)始玩游戲時(shí)錢(qián)數(shù)是200</p><p><b> bet=0;</b></p><p> for(i=0;i<5;i++)</p><p> {pokerF[i]=0; //|對(duì)pokerOfFarmer初始化<
33、;/p><p> pokerL[i]=0; //|對(duì)pokerOfLandlord初始化</p><p> }pokerNumF=0;//玩家手中的牌數(shù)初始化為0</p><p> pokerNumL=0;//莊家手中的牌數(shù)初始化為0</p><p> srand((int)time(0));</p><p>
34、; for(i=0;i<NUM;i++)</p><p> {randNum[i]=rand()*51/32767+1;//產(chǎn)生隨機(jī)數(shù)數(shù)組</p><p><b> }</b></p><p> }//構(gòu)造函數(shù)Poker()結(jié)束</p><p> ?。ㄈ┬乱痪珠_(kāi)始時(shí)需要洗牌,實(shí)現(xiàn)洗牌這個(gè)函數(shù)initPok
35、er();</p><p> void Poker::initPoker()</p><p> {cout<<"新一局游戲開(kāi)始,開(kāi)始洗牌>>>>>"<<endl;</p><p> pokerF[0]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><
36、;p> pokerF[1]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p> pokerL[0]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p> pokerL[1]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p> pokerNumF=2;</p><p>
37、; pokerNumL=2;</p><p> cout<<"洗牌完成,你的牌為:"<<getPokerF()<<endl;</p><p> }//void Poker::initPoker()結(jié)束</p><p> (四)給玩家發(fā)牌函數(shù)和給莊家發(fā)牌函數(shù)的實(shí)現(xiàn)getPokerF();getPokerL
38、();</p><p> string Poker::getPokerF()//用字符串的形式返回玩家的牌</p><p><b> {</b></p><p><b> int i;</b></p><p> string result="";</p>&
39、lt;p> for(i=0;i<pokerNumF;i++)</p><p> result=result+pokerName[pokerF[i]]+" ";</p><p> return result;</p><p> }//string Poker::getPokerF()結(jié)束</p><p>
40、 string Poker::getPokerL()//用字符串的形式返回莊家的牌</p><p><b> {</b></p><p><b> int i;</b></p><p> string result="";</p><p> for(i=0;i<p
41、okerNumL;i++)</p><p> result=result+pokerName[pokerL[i]]+" ";</p><p> return result;</p><p> }//string Poker::getPokerL()結(jié)束</p><p> (五)玩家總點(diǎn)數(shù)的函數(shù)和莊家總點(diǎn)數(shù)函數(shù)的實(shí)現(xiàn)
42、getSumF();getSumL();</p><p> int Poker::getSumF() //返回玩家的總點(diǎn)數(shù)</p><p><b> {</b></p><p> int result=0;</p><p> for(int i=0;i<pokerNumF;i++)</p>
43、<p> result=result+pokerValue[pokerF[i]];</p><p> return result;</p><p><b> }</b></p><p> int Poker::getSumL()//返回莊家的總點(diǎn)數(shù)</p><p><b> {</b
44、></p><p> int result=0;</p><p> for(int i=0;i<pokerNumL;i++)</p><p> result=result+pokerValue[pokerL[i]];</p><p> return result;</p><p><b>
45、 }</b></p><p> (六)main函數(shù);</p><p> int main()</p><p><b> {</b></p><p> int choose=1;</p><p> Poker poker;</p><p> cout
46、<<"****************** 歡迎玩二十一點(diǎn)游戲 ******************"<<endl<<endl;</p><p> poker.inputBet();</p><p> poker.initPoker(); //洗牌 </p><p>
47、while(choose==1||choose==2||choose==3||choose==4)</p><p><b> {</b></p><p> cout<<"1.要牌 2.不要牌 3.重新開(kāi)始 4.退出 >>請(qǐng)輸入數(shù)字選擇操作:";</p><p> cin>>choo
48、se;</p><p> if(choose==1) poker.farmerAsk();</p><p> else if(choose==2) poker.landlordProcess();</p><p> else if(choose==3) poker.newGame();</p><p
49、> else if(choose==4) exit(0);</p><p><b> }</b></p><p><b> return 0;</b></p><p> }//main函數(shù)結(jié)束</p><p><b> 4.2 測(cè)試</b></
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙牌游戲課程設(shè)計(jì)
- 紙牌游戲課程設(shè)計(jì)
- 紙牌游戲-課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)說(shuō)明書(shū)棒打豬頭網(wǎng)頁(yè)游戲
- java課程設(shè)計(jì)——蜘蛛紙牌游戲
- java課程設(shè)計(jì)-蜘蛛紙牌游戲設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告--- 蜘蛛紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)“紙牌游戲”
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--紙牌游戲
- 課程設(shè)計(jì)說(shuō)明書(shū)
- 課程設(shè)計(jì)說(shuō)明書(shū)
- 前門(mén)課程設(shè)計(jì)說(shuō)明書(shū)
- javaweb課程設(shè)計(jì)說(shuō)明書(shū)
- 后蓋課程設(shè)計(jì)說(shuō)明書(shū)
- 鍋爐課程設(shè)計(jì)說(shuō)明書(shū)
- 空調(diào)課程設(shè)計(jì)說(shuō)明書(shū)
- 蝸輪課程設(shè)計(jì)說(shuō)明書(shū)
- 采礦課程設(shè)計(jì)說(shuō)明書(shū)
評(píng)論
0/150
提交評(píng)論