21点游戏课程设计.docx
- 文档编号:29250633
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:11
- 大小:16.53KB
21点游戏课程设计.docx
《21点游戏课程设计.docx》由会员分享,可在线阅读,更多相关《21点游戏课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
21点游戏课程设计
/*玩家最多可以要5张牌,但是如果牌的点数之和超过21,则自动出局,在不超过21点的情况下,玩与庄家比牌的点数大小,大者为赢家。
*/
#include
#include
#include
usingnamespacestd;
classCCard
{
private:
intnaPip[5];//定义一个数组,一共是5张牌。
intnNumber;//发了多少张牌。
intnDollar;//有多少钱
intnGamble;//赌注
intnWin;//赢局数
intnLose;//输局数
intnDraw;//输局数
public:
CCard();//构造函数
voidFirstPlayTwo();//最初两张牌
intGetNumber();//返回牌张数
intGetPip();//返回点数
voidDisplayPip();//一次全部显示牌面点数。
voidDisplayPip(int);//除了第一张牌,一次全部显示牌面点数(针对计算机牌的显示)
voidTurnPlay();//出了一张牌
voidWin();//赢了计算赌注
voidLose();//输了
voidDraw();//平局
intsetGamble(int);//设置赌注,赌本不够返回1
intgetMoney();//返回钱数
voidDisplayInfo();//打印必要的信息
intGetCurrentCard();//返回当前牌点。
};
CCard:
:
CCard()
{
nNumber=0;//开始没有发牌
nDollar=100;//初始赌本为0
for(inti=0;i<5;i++)
naPip[i]=0;//五张牌全部为0
nGamble=0;
nWin=nLose=nDraw=0;//没输没赢没有平局
}
intCCard:
:
getMoney()
{returnnDollar;}
voidCCard:
:
DisplayInfo()//打印相关信息。
{
cout<<"您一共玩了"< cout<<"其中输了"< cout<<"赢了"< cout<<"平了"< cout<<"您还有赌本"< } intCCard: : setGamble(intgamble) { if(nDollar-gamble<0) return-1; if(gamble<0) { if(nDollar-20<0) return-1; nGamble=20; } else nGamble=gamble; nDollar-=nGamble; return0; } voidCCard: : FirstPlayTwo() { naPip[0]=rand()%13+1; naPip[1]=rand()%13+1; nNumber=2;//现在有两张牌 } intCCard: : GetCurrentCard() {returnnaPip[nNumber-1];} intCCard: : GetNumber()//返回牌数 {returnnNumber;} intCCard: : GetPip()//返回点数 { intnPip=0; for(inti=0;i {if(naPip[i]>=10) nPip=nPip+10; else nPip+=naPip[i];} returnnPip; } voidCCard: : DisplayPip()//依次显示牌面点数 { for(inti=0;i cout< cout< } voidCCard: : TurnPlay()//出一张牌面 { nNumber++; naPip[nNumber-1]=rand()%13+1; } voidCCard: : Win() { cout<<"赢家牌面"; DisplayPip(); cout<<"牌面点数"< nDollar=nDollar+2*nGamble; nWin++; cout<<"赌本: $"< < cout< } voidCCard: : Lose() { nLose++; cout<<"输家牌面: "; DisplayPip(); if(GetPip()>21) cout<<"暴了! "< else cout<<"牌面点数: "< cout<<"赌本: $"< < cout< } voidCCard: : Draw() { nDraw++; nDollar+=nGamble; cout<<"平局牌面"< DisplayPip(); if(GetPip()>21) cout<<"暴了! "< else cout<<"牌面点数: "< cout<<"赌本: $"< < cout< } voidCCard: : DisplayPip(intn) { cout<<"[*]"<<"\t"; cout<<"[*]"<<"\t"; for(inti=2;i cout< cout< } //非成员函数区域 voidDisplayRule() { cout<<"\t欢迎进入21点游戏世界! \n\n"< cout<<"\t游戏规则\n"; cout<<"\t玩家最多可以要五张牌\n"; cout<<"\t如果牌的总点数超过21点则自动判输\n"; cout<<"\t赢家可得双倍赌注\n"; cout<<"\t计算机在大于等于16点时不要牌\n"; cout<<"\t朱文丽祝您好运! \n"; cout< } voidJudge(CCard&cpu,CCard&player) { cout< if((cpu.GetPip()>21&&player.GetPip()>21)||cpu.GetPip()==player.GetPip()) { cout<<"\n\n平局\n! "; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据\t"; player.Draw(); cout< } elseif((cpu.GetPip()>21||(player.GetPip())>cpu.GetPip()&&player.GetPip()<=21)) { cout<<"\n\n恭喜您,您赢了\n! "; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据\t"; player.Win(); cout< } else { cout<<"\n\n很遗憾,您输了\n! "; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据\t"; player.Lose(); cout< } } voidplayTurn(CCard&cpu,CCard&player) { charchChoice; intblCpu=1,blPlayer=1; cpu.FirstPlayTwo(); do { cout<<"您的牌点为: \t"< player.DisplayPip(); cout<<"计算机的牌点为"< cpu.DisplayPip (1); cout<<"您的牌面点数是"< if(blPlayer) { cout<<"\n\n您是否继续要牌? (Y/N)"< cin>>chChoice; if((chChoice=='Y'||chChoice=='y')) {if(player.GetNumber()<5) {player.TurnPlay(); cout<<"您要的这张牌是"< if(player.GetPip()>21) blPlayer=0; } else { cout<<"对不起,您已经要了五张牌了! "< blPlayer=0; } } } if(chChoice=='N'||chChoice=='n') blPlayer=0; if(cpu.GetPip()<16&&cpu.GetNumber()<5) { cpu.TurnPlay(); cout<<"计算机要牌,牌点是: "< } else blCpu=0; if(blCpu&&player.GetNumber()<5&&player.GetPip()<21) blPlayer=1; }while(blCpu||blPlayer); Judge(cpu,player); } intmain(intargc,char*argv[]) { srand((unsigned)time(NULL)); CCardcpu,player;//人和计算机赌 intblLogic; intnMoney;//下注的数目 DisplayRule();//打印规则 charchChoice; cout<<"是否开始游戏(Y/N)? \n"; cin>>chChoice; while(chChoice=='Y'||chChoice=='y') { do { cout<<"您现在有的赌本: "< cout<<"请下注: (赌注不能超过赌本)"< cin>>nMoney; blLogic=player.setGamble(nMoney); if(blLogic) cout<<"您的赌本不够! 请重新下注: "< }while(blLogic);//注意dowhile的使用,后面有分号。 playTurn(cpu,player);//玩一局 cout<<"是否继续玩游戏(Y/N)"< cin>>chChoice; } player.DisplayInfo();//显示赌完之后的结果。 cout<<"\\您的选择是明智的,赌博有害身体健康! "< cout<<"我们不欢迎你再次使用本程序! "< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 21 游戏 课程设计