版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流C+課程設(shè)計21點撲克牌游戲.精品文檔.此程序為21點撲克牌游戲,玩家一共可以要五張牌,但如果牌的點數(shù)超過21,則自動出局;在不超過21點的情況下,玩家與莊家比牌的點數(shù)大小,大者為贏,相同則為平局。 程序說明: 1) 將所有的函數(shù)與相應(yīng)的數(shù)據(jù)封裝到類中,并改寫主程序。使程序簡化。 2) 程序中一共有13張撲克牌可以隨時抽取,大于10的點數(shù)為0.5。 3) 超級玩家永遠(yuǎn)不會輸?shù)簦闯壨婕铱梢圆榭?/p>
2、下一張牌,若大于21點,則可以拒絕,當(dāng)然游戲規(guī)則上不能泄露這點秘密。 4) 超級玩家可以查看下一張牌,即輸入指定的字符串或字符,然后按要求輸入正確密碼后才能看自己的和計算機的牌,并指定下一級牌的點數(shù)。 5) 每次要牌后可以設(shè)定賠率,即如果開始下的是10元錢的注,如果牌好,你可以要求繼續(xù)下注,當(dāng)然不能超過你所有的總錢數(shù)。 6) 將界面的提示說明改成中文界面,界面的解釋詳細(xì)友好,可以吸引更多的玩家。 類的封裝 設(shè)計一個類,將出
3、牌,下注等的操作包含進(jìn)去,玩家和計算機。均為這個類的對象。這樣,在玩牌及判斷輸贏時,函數(shù)只需要用這兩個對象的引用做參數(shù)即可,大大簡化了函數(shù)。 具體的參考的數(shù)據(jù)結(jié)構(gòu)如下; class CCard private: int naPip5; /一共五張牌 int nNumber; /實際發(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(); /返回點數(shù) void DidplayPip();
6、160; /依次顯示牌面的點數(shù) void DidplayPip(int); /除了第一張牌,依次全部顯示牌面點數(shù)(針對計算機牌的顯示) void TurnPlay(); /出一張牌 void Win(); /贏了計算賭注 void
7、 Lose(); /輸了 void Draw(); /平局 int SetGamblec(int); /設(shè)置賭注,賭本不夠返回-1 int GetMoney(); /返回錢數(shù) void DisplayInfo();
8、0; /顯示必要的信息 char * GetCurrentCard(); /返回當(dāng)前牌點 void DeleteCard(void); /刪除當(dāng)前牌點,作弊用 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); /為計算機和玩家各發(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請問是否玩牌:" 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<<"對不起,您沒賭本了"<<endl; /若賭本輸光,結(jié)束程序 return(0);
25、 BET(bet,money); /下注的程序 deal(player,cpu,playerturns,cputurns); /給玩家和計算機各發(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; /計算機開始要牌的條件 cout<<endl; cout<<"ttt計算機要了一張牌"<<endl; hit(cpu); /調(diào)用發(fā)牌程序
33、 cout<<endl; cout<<endl; cout<<"ttt計算機的牌面為:"<<cpu<<endl; /輸出計算機的牌面的總點數(shù) cout<<"ttt您的牌面為:"<<player<<endl; /輸出玩家的牌面的總點數(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) /為計算機和玩家各發(fā)兩張牌 int playercard1,playercard2,cpucard1,cpucard2; playerturns=2; cputurns=2; playercard1=random(13,1);
42、160; /取得13與1之間的隨機數(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) /若牌面的點數(shù)大于10,按10來計點數(shù) playercard1=
44、10; if(playercard2>=10) playercard2=10; if(cpucard1>=10) cpuca
45、rd1=10; if(cpucard2>=10) cpucard2=10; player=playercard1+playercard2; /玩家兩張牌的總點數(shù) cpu=cpucard1+cpucard2;
46、 /計算機兩張牌的總點數(shù) cout<<"ttt現(xiàn)有您的牌面總數(shù)是 :"<<player<<endl; cout<<""<<playercard1<<"" cout<<""<<playercard2<<"" cout<<endl; cout<<"ttt計算
47、機有一張"<<cpucard1<<" 顯示"<<endl; cout<<endl; cout<<"* "<<" "<<cpucard1<<"" /計算機隱藏一張牌面 /- 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; /牌點總數(shù) cout<<"ttt牌面是 :"<<card<<endl; /輸出牌面 cout<<"ttt總的牌面
50、是:"<<total<<endl; /輸出總點數(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點 cout<<
52、;"ttt很遺憾,你輸了"<<endl; lose+; else if(cpu<player) /玩家贏了
53、0; cout<<"nttt恭喜你,你贏了" money=money+(bet*2); win+;
54、 if(cpu>21) /計算機超過了21點 cout<<"ttt計算機輸了"<<endl;
55、0; if(player<21) cout<<"nttt恭喜你,你贏了" win+; money=money+(bet*2);
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有害氣體檢測箱行業(yè)深度研究報告
- 2024年氧焊割配件項目可行性研究報告
- 2024年機械手刀庫項目可行性研究報告
- 2024年手工純棉小挎包項目可行性研究報告
- 2024至2030年中國無糖型魔芋麥芽粉行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年麥味地黃口服液項目投資價值分析報告
- 個人形象塑造與職場禮儀
- 2024至2030年中國全塑型運動地板行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國仿真砂巖茶幾行業(yè)投資前景及策略咨詢研究報告
- 商品條碼管理辦法條文釋義
- 八年級上冊歷史知識結(jié)構(gòu)圖
- 特殊建設(shè)工程消防設(shè)計審查申請表
- 漢密爾頓抑郁量表(24項)——評定方法
- 鄭百文案例簡要探析
- 功能高分子材料和智能高分子材料.PPT
- 莫爾條紋干涉光學(xué)系統(tǒng)仿真設(shè)計
- 紅外熱像儀的應(yīng)用PPT課件
- 未婚承諾書模板
- [推薦]:校園歌手大賽show安全應(yīng)急預(yù)案(正式)
- 部編版六年級上語文成績登記表
評論
0/150
提交評論