C++课程设计21点纸牌游戏程序Word下载.docx
- 文档编号:7662358
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:18.78KB
C++课程设计21点纸牌游戏程序Word下载.docx
《C++课程设计21点纸牌游戏程序Word下载.docx》由会员分享,可在线阅读,更多相关《C++课程设计21点纸牌游戏程序Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
ans);
//是否进行新一轮的游戏
voidclean();
//清屏
voidwait(int);
voidpause();
intGetInt(int,int);
intrandom(long,long);
private:
intplayerturns,cputurns,money;
intwin,lose,draw,bet;
floatplayer,cpu;
charanswer[7];
chardaan[7];
};
//---------------------------------------------------------------------------------------
voidGame:
:
wait(intmilli)
clock_tstart;
start=clock();
while((clock()-start)<
milli)
}
//=========================================================
pause()
cout<
<
"
PressAnyKeyToContinue"
endl;
getch();
intGame:
GetInt(intL=0,intH=100)
intent;
PleaseEnterANumberBetween"
L<
and"
H<
cin>
>
ent;
while((ent<
L)||(ent>
H))
Error"
Valuemustbebetween"
"
}
return(ent);
//==========================================================
random(longhi,longlo)//随机抽牌
intran;
srand((unsigned)time(NULL));
ran=rand()%(hi-(lo-1))+lo;
return(ran);
//=============================================================
rules()
\t\t\t*********欢迎使用21点游戏软件*********"
\t\t\t游戏规则:
\t\t\t※①:
每轮游戏你最多只可以有5张牌。
\t\t\t※②:
如果你的点数超过21将输掉这轮游戏。
\t\t\t※③:
高级玩家可以看下一张牌。
\t\t\t※④:
胜利者将得到2倍的注金。
\t\t\t※⑤:
庄家牌点数不会小于16点。
\t\t\t"
pause();
BET()//下注
system("
cls"
//执行系统命令cls
\t\t\t你的资本:
$"
money<
\t\t\t你想下多少赌注?
bet;
if(bet<
=0)
{
对不起,输入有误"
exit(0);
}
if(money-bet<
0)
对不起,你没有那么多钱!
("
//seesifyourbroke
exit(0);
money-=bet;
//----------------------------------------------------------------------------------------
deal()//发前两张牌
intplayercard1,playercard2,cpucard1,cpucard2;
floatccard1,ccard2,pcard2,pcard1;
playerturns=2;
//开始给玩家发两张牌
cputurns=2;
//庄家也发两张牌
playercard1=random(13,1);
//在1到13中找出一个随机数
\n\t\t\t正在洗牌,请稍候......"
wait(500);
playercard2=random(13,1);
["
playercard1<
]"
playercard2<
if(playercard1>
10)//大于十的牌点数全部置为0.5
pcard1=0.5,player=pcard1,playercard1=0;
if(playercard2>
pcard2=0.5,player+=pcard2,playercard2=0;
player+=playercard1+playercard2;
//总点数
\t\t\t你现在的点数为:
player<
cpucard1=random(13,1);
//调用函数
wait(350);
cpucard2=random(13,1);
\t\t\t庄家有一张"
cpucard1<
为正面牌!
[*]"
["
if(cpucard1>
ccard1=0.5,cpu=ccard1,cpucard1=0;
if(cpucard2>
ccard2=0.5,cpu+=ccard2,cpucard2=0;
cpu+=cpucard1+cpucard2;
//总的点数
}
run(Game&
c2)//进行异常处理
charans;
do{
intm=0;
system("
c2.clean();
//进行新的一轮游戏!
c2.check();
//检验是否爆庄
c2.BET();
//进行下注
c2.deal();
//洗牌
do{
if(playerturns==5)cout<
已达最大牌数,不能再要牌了,请按任意键看你的总的点数!
try{//开始捕获异常处理
cout<
\t\t\t你愿意继续吗?
(hit愿意,stay否):
m=0;
//可以没有的!
但把下面的if语句改一下就必须有了
cout<
flush;
//刷新流
cin>
ans;
cin.ignore(20,'
\n'
//把输入行中的其余字符取空,以便后面的输入从新一轮开始
if((ans=='
h'
)||(ans=='
H'
s'
S'
))break;
elsethrowans;
//产生异常事件
}
catch(char)//开始处理异常机制
{
cout<
你的输入有误!
:
(请重新输入"
m=1;
}
catch(...){
cout<
m=2;
}while(m!
=0);
if((ans=='
))
{
playerturns++;
if(playerturns>
5)
cout<
\t\t\t你不能多于5张牌!
}
if((playerturns<
6)&
&
(ans=='
))
c2.hit1();
}while((ans=='
));
for(;
(cpu<
16)&
(cputurns<
6);
cputurns++)
\t\t\t庄家得到一张牌!
c2.hit2();
//callshitfunction
\t\t\t庄家的点数为:
cpu<
//显示庄家的总点数
\t\t\t你的点数为:
//显示玩家的总点数
c2.results();
//看你是否赢了
c2.replay(ans);
}while((ans=='
y'
Y'
hit1()//取下一张并把它加入总和
intcard=0,copycard=0,bet1=0;
floatcards=0;
card=random(13,1);
copycard=card;
charans,s1[100];
如果您是普通玩家请按n."
如果您是高级玩家或超级玩家请按y."
label1:
if(ans=='
||ans=='
)
cin.ignore(20,'
//把输入行中的其余字符取空,以便后面的输入从新一路轮开始
请输入特别玩家的6位密码:
cin.getline(s1,7);
//提取密码
if(!
strcmp(s1,answer))
{
\t\t\t这张牌是:
copycard<
是否加注(yorn)?
\n"
cin>
if(ans=='
{
你的现金还有$"
你要加多少注?
(你也可以不加)"
bet1;
if(money-bet1<
{
cout<
你没有足够的赌注"
}
money=money-bet1;
bet+=bet1;
\t\t\t你的总点数为:
}
else
{
if(cards==0.5)
player-=cards;
elseplayer-=copycard;
}
}
else
if(strcmp(s1,daan)==0)
现在计算机的总牌点为:
您的总牌点为:
floatcard;
card=(float)random(13,1);
if(card>
10)card=0.5;
下张牌面是:
card<
您想要什么牌?
请输入牌点数:
card;
您要的牌为"
player=player+card;
//牌点总数
总的牌面是:
player<
//输出总点数
else
对不起,你输入的密码错误!
不能看牌"
是否再次输入密码(yesorno)?
cin>
if(ans=='
gotolabel1;
else
cout<
\t\t\t总点数是:
else
10)
cards=0.5,card=0;
};
player+=cards+card;
\t\t\t总点数为:
}
//-----------------------------------------------------------------
hit2()//确保庄家不会爆庄并且点数大于16
intcard=0,copycard=0;
card=random(13,1);
这张牌是:
cpu=cpu+cards+card;
if(cpu>
21){
if(cards==0)cpu-=copycard;
//当card小于10但总数大于21时执行
elsecpu-=cards;
//当card大于10且点数大于21时执行
\t\t\t总点数为:
if(cpu<
16)//确保庄家点数大于等于16
cpu=16;
//---------------------------------------------------------------------
results()//找出赢家
if(cpu==player)
\t\t\t点数一样,你们平了!
draw++;
money+=bet;
if(player>
21)
\t\t\t啊哦,你爆了!
lose++;
if(cpu<
player)
\n\t\t\t恭喜你,你赢了!
)"
money=money+(bet*2);
win++;
if(cpu>
\t\t\t恭喜你,庄家爆了!
if(player<
)"
win++;
money=money+(bet*2);
\t\t\t不好意思,你输了!
lose++;
GameGame:
operator=(Game&
d)//保留上一轮的一些数据
Gamet;
t.win+=d.win,t.lose+=d.lose,t.draw=+d.draw,t.playerturns=0,t.cputurns=0,t.money+=d.money,t.player=0,t.cpu=0;
returnt;
clean()//清零
win=this->
win,lose=this->
lose,draw=this->
draw,playerturns=0,cputurns=0,money=this->
money,
bet=0,player=0,cpu=0;
replay(char&
ans)//是否继续游戏
\n\t\t\t你是否想继续游戏(yesorno)?
check()
if(money<
=0)//检查钱的多少
对不起,你输光了,你不能玩了!
print()//打印最后结果
{
voidsign();
\t\t\t\t赢:
win<
\t\t\t\t负:
lose<
\t\t\t\t平:
draw<
\t\t\t\t余额:
\t\t\t\t谢谢使用"
=-1000)cout<
\t\t\t你输的真惨啊!
intmain()
Gamec2;
//执行系统命令cls
c2.rules();
\t\t\t游戏可以开始了吗?
(yesorno):
if((ans=='
))//看你是否想要进行游戏
\t\t\t你现在拥有的赌本为$100!
//设定起始赌金
//cout<
//pause();
else//如果否退出游戏
return(0);
c2.run(c2);
//进行游戏
c2.print();
//输出最后结果
\t\t\t\t"
return(0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 21 纸牌 游戏 程序