中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C++編寫的21點(diǎn)小游戲代碼

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
#include<iostream>
#include<string>
#include<time.h>
using namespace std;
 
#define NUM 1000
int j=2;//定義為全局變量
int randNum[NUM];//因?yàn)閞and()函數(shù)有一定的缺陷,所以在程序中定義了randNum數(shù)組來(lái)存放隨機(jī)數(shù)
                 //即使使用了種子函數(shù)srand(),由于程序運(yùn)行時(shí)間比較短,也不太好設(shè)置種子。因此
 
使用數(shù)組來(lái)存放隨機(jī)數(shù)
 
class Poker
{
private:
 int poker[53];     //撲克
 int pokerValue[53]; //撲克代表的數(shù)值
 string pokerName[53]; //撲克名
  
 int money;   //玩家錢數(shù)  
 int bet;     //玩家的賭注
 
 int pokerF[5];   //玩家手中的牌 F:Farmer   L:Landlord
 int pokerL[5];   //莊家手中的牌 F:Farmer   L:Landlord
 int pokerNumF;   //玩家手中的牌數(shù)
 int pokerNumL;   //莊家手中的牌數(shù)
public:
 Poker();           //構(gòu)造函數(shù),對(duì)牌初始化
 void initPoker();  //洗牌,在每輪游戲開始前進(jìn)行
 string getPokerF();  //用字符串的形式返回玩家的牌
 string getPokerL();  //用字符串的形式返回莊家的牌
 int getSumF();       //返回玩家牌的點(diǎn)數(shù),用以判斷是否超過21點(diǎn)
 int getSumL();       //返回莊家牌的點(diǎn)數(shù)
 void farmerAsk();           //玩家要牌
 void landlordAsk();         //莊家要牌
 void inputBet();            //玩家輸入賭注
 void newGame();            //開始新游戲
 void landlordProcess();        //在玩家不要牌時(shí)進(jìn)行處理
 
};
 
Poker::Poker()
{
 
 poker[0]=0;
 for(int i=1;i<=13;i++)    //|
 {                         //|
  poker[i]=i;           //|用構(gòu)造函數(shù)對(duì)牌初始化
  poker[i+13]=i;        //|
  poker[i+26]=i;        //|
  poker[i+39]=i;        //|
 }//for結(jié)束
 
 pokerValue[0]=0;
 for(i=1;i<=52;i++)
 {
  if(poker[i]<=10)  pokerValue[i]=poker[i];
  else              pokerValue[i]=10;
 }//for結(jié)束
 
 
 pokerName[0]="";
 for(i=0;i<4;i++)
 {
  pokerName[1+13*i]="A";
  pokerName[2+13*i]="2";
  pokerName[3+13*i]="3";
  pokerName[4+13*i]="4";
  pokerName[5+13*i]="5";
  pokerName[6+13*i]="6";
  pokerName[7+13*i]="7";
  pokerName[8+13*i]="8";
  pokerName[9+13*i]="9";
  pokerName[10+13*i]="10";
  pokerName[11+13*i]="J";
  pokerName[12+13*i]="Q";
  pokerName[13+13*i]="K";
 }//for結(jié)束
  
 money=200;  //玩家開始玩游戲時(shí)錢數(shù)是200
 bet=0;
  
 for(i=0;i<5;i++)
 {
  pokerF[i]=0;    //|對(duì)pokerOfFarmer初始化
  pokerL[i]=0;    //|對(duì)pokerOfLandlord初始化
 }
 
 
 pokerNumF=0;//玩家手中的牌數(shù)初始化為0
 pokerNumL=0;//莊家手中的牌數(shù)初始化為0
  
 srand((int)time(0));
 for(i=0;i<NUM;i++)
 {
  randNum[i]=rand()*51/32767+1;//產(chǎn)生隨機(jī)數(shù)數(shù)組
 }
 
}//構(gòu)造函數(shù)Poker()結(jié)束
void Poker::initPoker()
{
    cout<<"新一局游戲開始,開始洗牌>>>>>"<<endl;
 
 pokerF[0]=randNum[j++];  //產(chǎn)生1-52的隨機(jī)數(shù)
 pokerF[1]=randNum[j++];  //產(chǎn)生1-52的隨機(jī)數(shù)
 pokerL[0]=randNum[j++];  //產(chǎn)生1-52的隨機(jī)數(shù)
 pokerL[1]=randNum[j++];  //產(chǎn)生1-52的隨機(jī)數(shù)
  
 pokerNumF=2;
 pokerNumL=2;
  
 cout<<"洗牌完成,你的牌為:"<<getPokerF()<<endl;
}//void Poker::initPoker()結(jié)束
 
string Poker::getPokerF()//用字符串的形式返回玩家的牌
{
 int i;
 string result="";
  
 for(i=0;i<pokerNumF;i++)
     result=result+pokerName[pokerF[i]]+" ";
  
 return result;
}//string Poker::getPokerF()結(jié)束
 
string Poker::getPokerL()//用字符串的形式返回莊家的牌
{
    int i;
 string result="";
  
 for(i=0;i<pokerNumL;i++)
     result=result+pokerName[pokerL[i]]+" ";
   
 return result;
}//string Poker::getPokerL()結(jié)束
 
int Poker::getSumF()   //返回玩家的總點(diǎn)數(shù)
{
 int result=0;
  
 for(int i=0;i<pokerNumF;i++)
     result=result+pokerValue[pokerF[i]];
 
 return result;
}
 
int Poker::getSumL()//返回莊家的總點(diǎn)數(shù)
{
 
 int result=0;
  
 for(int i=0;i<pokerNumL;i++)
  result=result+pokerValue[pokerL[i]];
  
 return result;
}
 
void Poker::farmerAsk()
{
    if(pokerNumF>=5)
 {
     cout<<"你的牌數(shù)已夠5張,不能再要牌了"<<endl;
  landlordProcess();
 }
 else
 {
        pokerF[pokerNumF++]=randNum[j++];   //產(chǎn)生1-52的隨機(jī)數(shù)
     cout<<"你的牌為:"<<getPokerF()<<endl;
     if(getSumF()>21)
     {
      cout<<"你撐死了,你輸了"<<bet<<"元"<<endl;
      money=money-bet;
      if(money<=0)
      {
       cout<<"你已經(jīng)輸光了,哈哈"<<endl;
       cout<<"游戲結(jié)束"<<endl;
       exit(0);
      }
      inputBet();
      initPoker();
     }
     else if(getSumF()==21)
     {
      landlordProcess();
     }
 }
}
 
void Poker::landlordAsk()
{
    if(pokerNumL>=5)
 {
     if(getSumF()>getSumL())
  {
      cout<<"莊家的牌為"<<getPokerL()<<endl;
      cout<<"你贏了,你贏了"<<bet<<"元"<<endl;
   money=money+bet;
   inputBet();
   initPoker();
  }
  else if(getSumF()==getSumL())
  {
      cout<<"莊家的牌為"<<getPokerL()<<endl;
      cout<<"平手"<<endl;
   inputBet();
   initPoker();
  }
  else if(getSumF()<getSumL())
  {
      cout<<"莊家的牌為"<<getPokerL()<<endl;
      cout<<"你輸了,你輸了"<<bet<<"元"<<endl;
   money=money-bet;
   if(money<=0)
      {
       cout<<"你已經(jīng)輸光了,哈哈"<<endl;
       cout<<"游戲結(jié)束"<<endl;
       exit(0);
      }
   inputBet();
   initPoker();
  }
 }
 else
 {
        pokerL[pokerNumL++]=randNum[j++];   //產(chǎn)生1-52的隨機(jī)數(shù)
  if(getSumL()>21)
  {
      cout<<"莊家的牌為"<<getPokerL()<<endl;
      cout<<"莊家撐死了,你贏了"<<bet<<"元"<<endl;
   money=money+bet;
   inputBet();
   initPoker();
  }
  else    landlordProcess();
 }
}
void Poker::inputBet()
{
 cout<<"你現(xiàn)在有"<<money<<"元,請(qǐng)輸入賭注:";
 do
 {
  cin>>bet;
  if(bet>money)
   cout<<"笨蛋,你沒那么多錢,少來(lái),重新輸入吧:";
 }while(bet>money);
 
}
 
void Poker::newGame()
{
 inputBet();
 initPoker();
 cout<<"你得到的牌為:"<<getPokerF()<<endl;
}
 
void Poker::landlordProcess()
{
   if(getSumL()>=17)
   {
    if(getSumL()>getSumF())          
    { 
        cout<<"莊家的牌為"<<getPokerL()<<endl;
     cout<<"莊家獲勝,你輸了"<<bet<<"元"<<endl;
     money=money-bet;
     if(money<=0)
     {
         cout<<"你已經(jīng)輸光了,哈哈"<<endl;
      cout<<"游戲結(jié)束"<<endl;
      exit(0);
   }
   inputBet();
   initPoker();
  }
     else if(getSumF()==getSumL())
       {
         cout<<"莊家的牌為"<<getPokerL()<<endl;
   cout<<"本次游戲平手"<<endl;
   inputBet();
   initPoker();
     }
        else
        {
      cout<<"莊家的牌為"<<getPokerL()<<endl;
   cout<<"你贏了,你贏了"<<bet<<"元"<<endl;
   money=money+bet;
   inputBet();
   initPoker();
  }
    }
    else
    {
     landlordAsk();
 }
}
  
  
int main()
{
    int choose=1;
 Poker poker;
 cout<<"****************** 歡迎玩二十一點(diǎn)游戲 ******************"<<endl<<endl;
 poker.inputBet();
    poker.initPoker();                   //洗牌
  
 while(choose==1||choose==2||choose==3||choose==4)
 {
  cout<<"1.要牌 2.不要牌 3.重新開始 4.退出  >>請(qǐng)輸入數(shù)字選擇操作:";
     cin>>choose;
     if(choose==1)            poker.farmerAsk();
     else if(choose==2)      poker.landlordProcess();
     else if(choose==3)      poker.newGame();
     else if(choose==4)      exit(0);
 }
 
 return 0;
}//main函數(shù)結(jié)束

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:IOS 8 使用系統(tǒng)自帶導(dǎo)航

下一篇:C# 結(jié)合html5 批量上傳文件和圖片預(yù)覽