C++课程设计21点纸牌游戏程序.docx

上传人:b****3 文档编号:3883992 上传时间:2022-11-26 格式:DOCX 页数:15 大小:18.55KB
下载 相关 举报
C++课程设计21点纸牌游戏程序.docx_第1页
第1页 / 共15页
C++课程设计21点纸牌游戏程序.docx_第2页
第2页 / 共15页
C++课程设计21点纸牌游戏程序.docx_第3页
第3页 / 共15页
C++课程设计21点纸牌游戏程序.docx_第4页
第4页 / 共15页
C++课程设计21点纸牌游戏程序.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C++课程设计21点纸牌游戏程序.docx

《C++课程设计21点纸牌游戏程序.docx》由会员分享,可在线阅读,更多相关《C++课程设计21点纸牌游戏程序.docx(15页珍藏版)》请在冰豆网上搜索。

C++课程设计21点纸牌游戏程序.docx

C++课程设计21点纸牌游戏程序

#include

#include

#include

#include

#include

#include

classGame

{

public:

Game()

{

win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0;

player=0,cpu=0;

charanswer1[]="123456";

strcpy(answer,answer1);

charanswer2[]="654321";

strcpy(daan,answer2);

};

voidrules();//显示规则

voidBET();//下注

voiddeal();//交易

voidrun(Game&);//进行异常处理

voidhit1();//拿下一牌

voidhit2();//确保庄家不会爆庄并且点数大于16

voidprint();//打印出最后结果

voidresults();//最后的胜利结果

voidcheck();//检查是否爆庄

Gameoperator=(Game&d);//运算符重载

voidreplay(char&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)

;

}

//=========================================================

voidGame:

:

pause()

{

cout<<"PressAnyKeyToContinue"<

getch();

}

//=========================================================

intGame:

:

GetInt(intL=0,intH=100)

{

intent;

cout<<"PleaseEnterANumberBetween"<

cin>>ent;

while((entH))

{

cout<<"Error"<

cout<<"Valuemustbebetween"<

cin>>ent;

}

return(ent);

}

//==========================================================

intGame:

:

random(longhi,longlo)//随机抽牌

{

intran;

srand((unsigned)time(NULL));

ran=rand()%(hi-(lo-1))+lo;

return(ran);

}

//=============================================================

voidGame:

:

rules()

{

cout<<"\t\t\t*********欢迎使用21点游戏软件*********"<

cout<

cout<

cout<<"\t\t\t游戏规则:

"<

cout<

cout<<"\t\t\t※①:

每轮游戏你最多只可以有5牌。

"<

cout<<"\t\t\t※②:

如果你的点数超过21将输掉这轮游戏。

"<

cout<<"\t\t\t※③:

高级玩家可以看下一牌。

"<

cout<<"\t\t\t※④:

胜利者将得到2倍的注金。

"<

cout<<"\t\t\t※⑤:

庄家牌点数不会小于16点。

"<

cout<<"\t\t\t";

pause();

}

//---------------------------------------------------------------------------------------

voidGame:

:

BET()//下注

{

system("cls");//执行系统命令cls

cout<<"\t\t\t你的资本:

$"<

cout<<"\t\t\t你想下多少赌注?

:

";

cin>>bet;

if(bet<=0)

{

cout<<"对不起,输入有误";

exit(0);

}

if(money-bet<0)

{

cout<<"对不起,你没有那么多钱!

:

(";//seesifyourbroke

exit(0);

}

money-=bet;

}

//----------------------------------------------------------------------------------------

voidGame:

:

deal()//发前两牌

{

intplayercard1,playercard2,cpucard1,cpucard2;

floatccard1,ccard2,pcard2,pcard1;

playerturns=2;//开始给玩家发两牌

cputurns=2;//庄家也发两牌

playercard1=random(13,1);//在1到13中找出一个随机数

cout<<"\n\t\t\t正在洗牌,请稍候......"<

wait(500);

playercard2=random(13,1);

wait(500);

cout<<"["<

cout<<"["<

if(playercard1>10)//大于十的牌点数全部置为0.5

{

pcard1=0.5,player=pcard1,playercard1=0;

}

if(playercard2>10)//大于十的牌点数全部置为0.5

{

pcard2=0.5,player+=pcard2,playercard2=0;

}

player+=playercard1+playercard2;//总点数

cout<<"\t\t\t你现在的点数为:

"<

cout<

cpucard1=random(13,1);//调用函数

wait(350);

cpucard2=random(13,1);//调用函数

cout<<"\t\t\t庄家有一"<

"<

cout<<"[*]"<<"["<

if(cpucard1>10)//大于十的牌点数全部置为0.5

{

ccard1=0.5,cpu=ccard1,cpucard1=0;

}

if(cpucard2>10)//大于十的牌点数全部置为0.5

{

ccard2=0.5,cpu+=ccard2,cpucard2=0;

}

cpu+=cpucard1+cpucard2;//总的点数

cout<

}

//----------------------------------------------------------------------------------------

voidGame:

:

run(Game&c2)//进行异常处理

{

charans;

do{

intm=0;

system("cls");//执行系统命令cls

c2.clean();//进行新的一轮游戏!

c2.check();//检验是否爆庄

c2.BET();//进行下注

c2.deal();//洗牌

do{

if(playerturns==5)cout<<"已达最大牌数,不能再要牌了,请按任意键看你的总的点数!

"<

do{

try{//开始捕获异常处理

cout<<"\t\t\t你愿意继续吗?

(hit愿意,stay否):

";

m=0;//可以没有的!

但把下面的if语句改一下就必须有了

cout<

cin>>ans;

cin.ignore(20,'\n');//把输入行中的其余字符取空,以便后面的输入从新一轮开始

if((ans=='h')||(ans=='H')||(ans=='s')||(ans=='S'))break;

elsethrowans;//产生异常事件

}

catch(char)//开始处理异常机制

{

cout<<"你的输入有误!

(请重新输入"<

m=1;

}

catch(...){

cout<<"你的输入有误!

(请重新输入"<

m=2;

}

}while(m!

=0);

if((ans=='h')||(ans=='H'))

{

playerturns++;

if(playerturns>5)

{

cout<<"\t\t\t你不能多于5牌!

"<

}

}

if((playerturns<6)&&(ans=='h'))

{

cout<

c2.hit1();

}

}while((ans=='h')||(ans=='H'));

for(;(cpu<16)&&(cputurns<6);cputurns++)

{

cout<

cout<<"\t\t\t庄家得到一牌!

"<

c2.hit2();//callshitfunction

}

cout<

cout<

cout<<"\t\t\t庄家的点数为:

"<

cout<<"\t\t\t你的点数为:

"<

cout<

c2.results();//看你是否赢了

c2.replay(ans);

}while((ans=='y')||(ans=='Y'));

}

voidGame:

:

hit1()//取下一并把它加入总和

{

intcard=0,copycard=0,bet1=0;

floatcards=0;

card=random(13,1);

copycard=card;

charans,s1[100];

cout<<"如果您是普通玩家请按n."<

cout<<"如果您是高级玩家或超级玩家请按y."<

cin>>ans;

label1:

if(ans=='y'||ans=='Y')

{

cin.ignore(20,'\n');//把输入行中的其余字符取空,以便后面的输入从新一路轮开始

cout<<"请输入特别玩家的6位密码:

";

cin.getline(s1,7);//提取密码

if(!

strcmp(s1,answer))

{

cout<<"\t\t\t这牌是:

"<

cout<<"是否加注(yorn)?

\n";

cin>>ans;

if(ans=='y'||ans=='Y')

{

cout<<"你的现金还有$"<

cout<<"你要加多少注?

(你也可以不加)";

cin>>bet1;

if(money-bet1<0)

{

cout<<"你没有足够的赌注";

}

money=money-bet1;

bet+=bet1;

cout<<"\t\t\t你的总点数为:

"<

}

else

{

if(cards==0.5)

player-=cards;

elseplayer-=copycard;

cout<<"\t\t\t你的总点数为:

"<

}

}

else

{

if(strcmp(s1,daan)==0)

{

cout<

cout<<"现在计算机的总牌点为:

"<

cout<<"您的总牌点为:

"<

floatcard;

card=(float)random(13,1);

if(card>10)card=0.5;

cout<<"下牌面是:

"<<"["<

cout<<"您想要什么牌?

请输入牌点数:

";

cin>>card;

if(card>10)card=0.5;

cout<

cout<<"您要的牌为"<<"["<

player=player+card;//牌点总数

cout<<"总的牌面是:

"<

cout<

}

else

{

cout<<"对不起,你输入的密码错误!

不能看牌"<

cout<<"是否再次输入密码(yesorno)?

"<

cin>>ans;

if(ans=='y'||ans=='Y')

gotolabel1;

else

{

cout<<"\t\t\t总点数是:

"<

}

}

}

}

else

{

if(card>10)

{

cards=0.5,card=0;

};

player+=cards+card;

cout<<"\t\t\t总点数为:

"<

}

}

//-----------------------------------------------------------------

voidGame:

:

hit2()//确保庄家不会爆庄并且点数大于16

{

intcard=0,copycard=0;

floatcards=0;

card=random(13,1);//调用函数

copycard=card;

cout<<"这牌是:

"<

if(card>10)

{

cards=0.5,card=0;

};

cpu=cpu+cards+card;

if(cpu>21){

if(cards==0)cpu-=copycard;//当card小于10但总数大于21时执行

elsecpu-=cards;//当card大于10且点数大于21时执行

cout<<"\t\t\t总点数为:

"<

}

if(cpu<16)//确保庄家点数大于等于16

{

cpu=16;

cout<<"\t\t\t总点数是:

"<

}

}

//---------------------------------------------------------------------

voidGame:

:

results()//找出赢家

{

if(cpu==player)

{

cout<<"\t\t\t点数一样,你们平了!

"<

draw++;

money+=bet;

}

if(player>21)

{

cout<<"\t\t\t啊哦,你爆了!

:

("<

lose++;

}

else

{

if(cpu

{

cout<<"\n\t\t\t恭喜你,你赢了!

:

)";

money=money+(bet*2);

win++;

}

}

if(cpu>21)

{

cout<<"\t\t\t恭喜你,庄家爆了!

:

)"<

if(player<21)

{

cout<<"\n\t\t\t恭喜你,你赢了!

:

)";

win++;

money=money+(bet*2);

}

}

else

{

if(cpu>player)

{

cout<<"\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;

}

//---------------------------------------------------------------------

voidGame:

:

clean()//清零

{

win=this->win,lose=this->lose,draw=this->draw,playerturns=0,cputurns=0,money=this->money,

bet=0,player=0,cpu=0;

}

//---------------------------------------------------------------------

voidGame:

:

replay(char&ans)//是否继续游戏

{

cout<<"\n\t\t\t你是否想继续游戏(yesorno)?

";

cin>>ans;

}

//---------------------------------------------------------------------

voidGame:

:

check()

{

if(money<=0)//检查钱的多少

{

cout<<"对不起,你输光了,你不能玩了!

:

("<

}

}

//---------------------------------------------------------------------

voidGame:

:

print()//打印最后结果

{

voidsign();

cout<<"\t\t\t\t赢:

"<

cout<<"\t\t\t\t负:

"<

cout<<"\t\t\t\t平:

"<

cout<<"\t\t\t\t余额:

"<

cout<<"\t\t\t\t使用"<

if(money<=-1000)cout<<"\t\t\t你输的真惨啊!

:

("<

}

//---------------------------------------------------------------------

intmain()

{

Gamec2;

charans;

system("cls");//执行系统命令cls

c2.rules();//调用函数

cout<<"\t\t\t游戏可以开始了吗?

(yesorno):

";

cin>>ans;

if((ans=='y')||(ans=='Y'))//看你是否想要进行游戏

{

cout<<"\t\t\t你现在拥有的赌本为$100!

"<

//cout<<"\t\t\t"<

//pause();

}

else//如果否退出游戏

{

return(0);

}

c2.run(c2);//进行游戏

c2.print();//输出最后结果

cout<

cout<<"\t\t\t\t";

return(0);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1