C++課程設(shè)計(jì)21點(diǎn)撲克牌游戲_第1頁
C++課程設(shè)計(jì)21點(diǎn)撲克牌游戲_第2頁
C++課程設(shè)計(jì)21點(diǎn)撲克牌游戲_第3頁
C++課程設(shè)計(jì)21點(diǎn)撲克牌游戲_第4頁
C++課程設(shè)計(jì)21點(diǎn)撲克牌游戲_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論