版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流C+課程設(shè)計(jì)21點(diǎn)撲克牌游戲.精品文檔.此程序?yàn)?1點(diǎn)撲克牌游戲,玩家一共可以要五張牌,但如果牌的點(diǎn)數(shù)超過21,則自動(dòng)出局;在不超過21點(diǎn)的情況下,玩家與莊家比牌的點(diǎn)數(shù)大小,大者為贏,相同則為平局。 程序說明: 1) 將所有的函數(shù)與相應(yīng)的數(shù)據(jù)封裝到類中,并改寫主程序。使程序簡(jiǎn)化。 2) 程序中一共有13張撲克牌可以隨時(shí)抽取,大于10的點(diǎn)數(shù)為0.5。 3) 超級(jí)玩家永遠(yuǎn)不會(huì)輸?shù)簦闯?jí)玩家可以查看
2、下一張牌,若大于21點(diǎn),則可以拒絕,當(dāng)然游戲規(guī)則上不能泄露這點(diǎn)秘密。 4) 超級(jí)玩家可以查看下一張牌,即輸入指定的字符串或字符,然后按要求輸入正確密碼后才能看自己的和計(jì)算機(jī)的牌,并指定下一級(jí)牌的點(diǎn)數(shù)。 5) 每次要牌后可以設(shè)定賠率,即如果開始下的是10元錢的注,如果牌好,你可以要求繼續(xù)下注,當(dāng)然不能超過你所有的總錢數(shù)。 6) 將界面的提示說明改成中文界面,界面的解釋詳細(xì)友好,可以吸引更多的玩家。 類的封裝 設(shè)計(jì)一個(gè)類,將出
3、牌,下注等的操作包含進(jìn)去,玩家和計(jì)算機(jī)。均為這個(gè)類的對(duì)象。這樣,在玩牌及判斷輸贏時(shí),函數(shù)只需要用這兩個(gè)對(duì)象的引用做參數(shù)即可,大大簡(jiǎn)化了函數(shù)。 具體的參考的數(shù)據(jù)結(jié)構(gòu)如下; class CCard private: int naPip5; /一共五張牌 int nNumber; /實(shí)際發(fā)了多少牌 int nDollar; /有多少錢
4、60; int nGamble; /賭注 int nWin; /贏局?jǐn)?shù) int nLost; /輸局?jǐn)?shù) int nDraw; /平局?jǐn)?shù) public: CCard();
5、60; /構(gòu)造函數(shù),初始化 void FirstPlayTwo(); / 最初兩張牌 int GetNumber(); /返回牌的張數(shù) double GetPip(); /返回點(diǎn)數(shù) void DidplayPip();
6、160; /依次顯示牌面的點(diǎn)數(shù) void DidplayPip(int); /除了第一張牌,依次全部顯示牌面點(diǎn)數(shù)(針對(duì)計(jì)算機(jī)牌的顯示) void TurnPlay(); /出一張牌 void Win(); /贏了計(jì)算賭注 void
7、 Lose(); /輸了 void Draw(); /平局 int SetGamblec(int); /設(shè)置賭注,賭本不夠返回-1 int GetMoney(); /返回錢數(shù) void DisplayInfo();
8、0; /顯示必要的信息 char * GetCurrentCard(); /返回當(dāng)前牌點(diǎn) void DeleteCard(void); /刪除當(dāng)前牌點(diǎn),作弊用 void ModifyCard(double); /修改當(dāng)前牌,作弊用 int Addgamble(int);
9、 /加賭注 ; 主程序 #include<iostream.h> #include<stdlib.h> /fuctions void replay(char &ans); /詢問玩家是否再玩一局 void hit(int &total); /要一張牌 void d
10、eal(int &player,int &cpu,int &playerturns,int &cputurns); /為計(jì)算機(jī)和玩家各發(fā)兩張牌 void BET(int &bet,int &money); /下注 void print(int wins,int lose,int draw,int money); /輸出最后結(jié)果 void ru
11、les(); /輸出游戲規(guī)則 void results(int player,int cpu,int bet,int &money,int &draw,int &win,int &lose); /判斷一局的結(jié)果 /*diyige*/ /wait.h begin #include <time.h> #include <stdio.h&g
12、t; void wait(int milli) /暫停, milli 毫秒 clock_t start; start=clock(); while( ( clock()-start ) < milli ); /wait.h end #include<iostream.h> #include<stdlib.h>
13、60; #include<conio.h> #include<time.h> /= void pause() /暫停,任按一鍵繼續(xù) cout<<"任按一鍵繼續(xù)"<<endl; getch(); /= int
14、 GetInt(int L=0,int H=100) int ent; cout<<"Please Enter A Number Between "<<L<<" and "<&l
15、t;H<<endl; cin>>ent; while(ent<L)|(ent>H)
16、; cout<<"Error"<<endl; cout<<"Value must be between "<<L<< " and "<<H<&
17、lt;endl; cin>>ent; return(ent); /= void sign() /Displ
18、ays ISAAC SHAFFER cout<<"This Program Was Written By Isaac Shaffer"<<endl; /= int random(long hi,long lo) /This Program Finds
19、160;A Random Number Between Hi and Low int ran; srand(unsigned)time(NULL); ran=rand()%(hi-(lo-1)
20、+lo; return(ran); /utility.h end int main() int player=0,cpu=0,win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=0,bet; char ans;
21、60; system("cls"); /執(zhí)行系統(tǒng)命令,清屏 rules(); cout<<"ttt請(qǐng)問是否玩牌:" cin>>ans; if(ans = 'y')|(ans='Y') / 檢查輸入是否為Yes
22、60; cout<<"ttt您的賭本為100美元"<<endl;/起始的賭本 money=100; cout<<"ttt" pause(); /暫停,任按一鍵繼續(xù)
23、160; else return(0); do system("cls"); if(money
24、<0) /看看有無賭本 cout<<"對(duì)不起,您沒賭本了"<<endl; /若賭本輸光,結(jié)束程序 return(0);
25、 BET(bet,money); /下注的程序 deal(player,cpu,playerturns,cputurns); /給玩家和計(jì)算機(jī)各發(fā)兩張牌 do
26、 cout<<"tttWould You Like To Hit or Stay :" /詢問是否要牌 cin>>ans; if(ans='h')|(
27、ans='H') /如果玩家要牌 playerturns+; /玩家手中的牌數(shù)增加一張 if(playerturns&
28、gt;5) /判斷玩家手中的牌數(shù)是否超過5張 cout<<"ttt你手中的牌不能超過5張牌" /若超過5張不能繼續(xù)要牌
29、60;
30、; if(playerturns<6)&&(ans='h') /判斷是否符合玩家要牌的條件 cout<<endl;
31、160; hit(player); /調(diào)用發(fā)牌程序 while(ans='h')|(ans='H'); /繼續(xù)詢問玩家是否要牌 for(;(cpu<16)&&(cputurns<6);cputurns+)
32、160; /計(jì)算機(jī)開始要牌的條件 cout<<endl; cout<<"ttt計(jì)算機(jī)要了一張牌"<<endl; hit(cpu); /調(diào)用發(fā)牌程序
33、 cout<<endl; cout<<endl; cout<<"ttt計(jì)算機(jī)的牌面為:"<<cpu<<endl; /輸出計(jì)算機(jī)的牌面的總點(diǎn)數(shù) cout<<"ttt您的牌面為:"<<player<<endl; /輸出玩家的牌面的總點(diǎn)數(shù) cout
34、<<endl; results(player,cpu,bet,money,draw,win,lose); /判斷輸贏 replay(ans); /詢問是否繼續(xù)玩牌 while(ans='y')|(ans='Y'); print(win,lose,draw,money); &
35、#160;/游戲結(jié)束,輸出結(jié)果 cout<<endl; cout<<"tttt" return(0); /- void rules() /游戲規(guī)則 cout<<"tt WELCOME TO ISAAC SHAFFER&
36、#39;S BLACK JACK GAME"<<endl; cout<<"ttt HERE ARE SOME SIMPLE RULES"<<endl; cout<<"ttt1:You Can only have a max of 5 cards
37、."<<endl; cout<<"ttt2:If you bust you automatically lose."<<endl; cout<<"ttt3:If you win you win double what you bet."<<endl;
38、 cout<<"ttt4:The Dealer stops at or after 16."<<endl; cout<<"tttt" pause(); /- void BET(int &bet,int &money)
39、; /接收玩家下注 system("cls"); cout<<"ttt您現(xiàn)有的 :$"<<money<<endl; cout<<"ttt您要下的賭注是: " cin>>bet;
40、60; if(bet<0) bet=bet*-1; money=money-bet; /- void deal(int &play
41、er,int &cpu,int &playerturns,int &cputurns) /為計(jì)算機(jī)和玩家各發(fā)兩張牌 int playercard1,playercard2,cpucard1,cpucard2; playerturns=2; cputurns=2; playercard1=random(13,1);
42、160; /取得13與1之間的隨機(jī)數(shù) cout<<"ntttDEALING HAND"<<endl; wait(350); /等待350ms playercard2=random(13,1); wait(150);
43、;cpucard1=random(13,1); wait(350); cpucard2=random(13,1); if(playercard1>=10) /若牌面的點(diǎn)數(shù)大于10,按10來計(jì)點(diǎn)數(shù) playercard1=
44、10; if(playercard2>=10) playercard2=10; if(cpucard1>=10) cpuca
45、rd1=10; if(cpucard2>=10) cpucard2=10; player=playercard1+playercard2; /玩家兩張牌的總點(diǎn)數(shù) cpu=cpucard1+cpucard2;
46、 /計(jì)算機(jī)兩張牌的總點(diǎn)數(shù) cout<<"ttt現(xiàn)有您的牌面總數(shù)是 :"<<player<<endl; cout<<""<<playercard1<<"" cout<<""<<playercard2<<"" cout<<endl; cout<<"ttt計(jì)算
47、機(jī)有一張"<<cpucard1<<" 顯示"<<endl; cout<<endl; cout<<"* "<<" "<<cpucard1<<"" /計(jì)算機(jī)隱藏一張牌面 /- void hit(int &total)
48、 /要一張牌 /This fuction is to deal a card and add it to the total int card; card=random(13,1); if(card>=10) &
49、#160; card=10; total=total+card; /牌點(diǎn)總數(shù) cout<<"ttt牌面是 :"<<card<<endl; /輸出牌面 cout<<"ttt總的牌面
50、是:"<<total<<endl; /輸出總點(diǎn)數(shù) /- void results(int player,int cpu,int bet,int &money,int &draw,int &win,int &lose) /判斷一局的結(jié)果 if(cpu=player) /平局
51、 cout<<"ttt平局"<<endl; draw+; if(player>21) /玩家超過了21點(diǎn) cout<<
52、;"ttt很遺憾,你輸了"<<endl; lose+; else if(cpu<player) /玩家贏了
53、0; cout<<"nttt恭喜你,你贏了" money=money+(bet*2); win+;
54、 if(cpu>21) /計(jì)算機(jī)超過了21點(diǎn) cout<<"ttt計(jì)算機(jī)輸了"<<endl;
55、0; if(player<21) cout<<"nttt恭喜你,你贏了" win+; money=money+(bet*2);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼結(jié)構(gòu)課程設(shè)計(jì)節(jié)點(diǎn)板
- 美妝產(chǎn)品直播課程設(shè)計(jì)
- 門衛(wèi)室課程設(shè)計(jì)紙
- 機(jī)械原理課程設(shè)計(jì)課本
- 2025屆高考英語二輪復(fù)習(xí)專項(xiàng)解密18完形填空之記敘文含解析
- 模電課程設(shè)計(jì)與
- 簡(jiǎn)支梁橋梁課程設(shè)計(jì)
- 鍋爐課程設(shè)計(jì)圖表
- 背景手繪課程設(shè)計(jì)
- 醫(yī)療大數(shù)據(jù)在診斷中的應(yīng)用考核試卷
- 2022年同濟(jì)大學(xué)單獨(dú)考試研究生報(bào)考資格審查表
- 單位委托存檔人員聘用期內(nèi)情況表
- 小麥旋耕施肥播種作業(yè)技術(shù)要點(diǎn)
- 施工單位試驗(yàn)室驗(yàn)收方案
- 最新油汀裝配生產(chǎn)工藝及管制要點(diǎn)培訓(xùn)資料
- 癃閉中醫(yī)護(hù)理方案解答
- MCGS與1500連接配置說明
- 半掛車產(chǎn)品設(shè)計(jì)規(guī)范手冊(cè)
- 【設(shè)計(jì)】每天3000噸紡織印染廢水處理設(shè)計(jì)方案(精華版)
- 健康促進(jìn)機(jī)關(guān)工作總結(jié)【八篇】
- 大醫(yī)精誠(chéng)原文注音
評(píng)論
0/150
提交評(píng)論