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