21点游戏课程设计

  • 格式:doc
  • 大小:50.00 KB
  • 文档页数:12

下载文档原格式

  / 21
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*玩家最多可以要5张牌,但是如果牌的点数之和超过21,则自动出局,在不超过21点的情况下,玩与庄家比牌的点数大小,大者为赢家。*/

#include

#include

#include

using namespace std;

class CCard

{

private:

int naPip[5]; //定义一个数组,一共是5张牌。

int nNumber; //发了多少张牌。

int nDollar; //有多少钱

int nGamble; //赌注

int nWin; //赢局数

int nLose; //输局数

int nDraw; //输局数

public:

CCard(); //构造函数

void FirstPlayTwo();//最初两张牌

int GetNumber();//返回牌张数

int GetPip(); //返回点数

void DisplayPip();//一次全部显示牌面点数。

void DisplayPip(int ); //除了第一张牌,一次全部显示牌面点数(针对计算机牌的显示)

void TurnPlay();//出了一张牌

void Win();//赢了计算赌注

void Lose();//输了

void Draw();//平局

int setGamble(int );//设置赌注,赌本不够返回1

int getMoney();//返回钱数

void DisplayInfo();//打印必要的信息

int GetCurrentCard();//返回当前牌点。

};

CCard::CCard()

{

nNumber=0;//开始没有发牌

nDollar=100;//初始赌本为0

for(int i=0;i<5;i++)

naPip[i]=0; //五张牌全部为0

nGamble=0;

nWin=nLose=nDraw=0; //没输没赢没有平局

}

int CCard::getMoney()

{return nDollar;}

void CCard::DisplayInfo()//打印相关信息。

{

cout<<"您一共玩了"<

cout<<"赢了"<

cout<<"平了"<

cout<<"您还有赌本"<

}

int CCard::setGamble(int gamble)

{

if(nDollar-gamble<0)

return -1;

if(gamble<0)

{

if(nDollar-20<0)

return -1;

nGamble=20;

}

else

nGamble=gamble;

nDollar-=nGamble;

return 0;

}

void CCard::FirstPlayTwo()

{

naPip[0]=rand()%13+1;

naPip[1]=rand()%13+1;

nNumber=2; //现在有两张牌

}

int CCard::GetCurrentCard() {return naPip[nNumber-1];}

int CCard::GetNumber() //返回牌数{return nNumber;}

int CCard::GetPip() //返回点数{

int nPip=0;

for(int i=0;i

{if(naPip[i]>=10)

nPip=nPip+10;

else

nPip+=naPip[i];}

return nPip;

}

void CCard::DisplayPip() //依次显示牌面点数

{

for(int i=0;i

cout<

cout<

}

void CCard::TurnPlay() //出一张牌面

{

nNumber++;

naPip[nNumber-1]=rand()%13+1;

}

void CCard::Win()

{

cout<<"赢家牌面";

DisplayPip();

cout<<"牌面点数"<

nDollar=nDollar+2*nGamble;

nWin++;

cout<<"赌本:$"<

<

cout<

}