21点游戏课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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< }