21点游戏

更新时间:2023-03-09 21:34:17 阅读: 评论:0

辽阔的原野-老鼠和猫的故事

21点游戏
2023年3月9日发(作者:学蒸馒头)

..

此程序为21点扑克牌游戏,玩家一共可以要五张牌,但如果牌的点数超过21,则自动出局;

在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为赢,相同则为平局。

程序说明:

1)将所有的函数与相应的数据封装到类中,并改写主程序。使程序简化。

2)程序中一共有13张扑克牌可以随时抽取,大于10的点数为0.5。

3)超级玩家永远不会输掉,即超级玩家可以查看下一张牌,若大于21点,则可以拒绝,

当然游戏规则上不能泄露这点秘密。

4)超级玩家可以查看下一张牌,即输入指定的字符串或字符,然后按要求输入正确密码

后才能看自己的和计算机的牌,并指定下一级牌的点数。

5)每次要牌后可以设定赔率,即如果开始下的是10元钱的注,如果牌好,你可以要求继

续下注,当然不能超过你所有的总钱数。

6)将界面的提示说明改成中文界面,界面的解释详细友好,可以吸引更多的玩家。

类的封装

设计一个类,将出牌,下注等的操作包含进去,玩家和计算机。均为这个类的对象。这样,

在玩牌及判断输赢时,函数只需要用这两个对象的引用做参数即可,大大简化了函数。

具体的参考的数据结构如下;

classCCard

{

private:

intnaPip[5];//一共五张牌

intnNumber;//实际发了多少牌

intnDollar;//有多少钱

..

intnGamble;//赌注

intnWin;//赢局数

intnLost;//输局数

intnDraw;//平局数

public:

CCard();//构造函数,初始化

voidFirstPlayTwo();//最初两张牌

intGetNumber();//返回牌的张数

doubleGetPip();//返回点数

voidDidplayPip();//依次显示牌面的点数

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

示)

voidTurnPlay();//出一张牌

voidWin();//赢了计算赌注

voidLo();//输了

voidDraw();//平局

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

intGetMoney();//返回钱数

voidDisplayInfo();//显示必要的信息

char*GetCurrentCard();//返回当前牌点

voidDeleteCard(void);//删除当前牌点,作弊用

voidModifyCard(double);//修改当前牌,作弊用

intAddgamble(int);//加赌注

..

};

主程序

#include

#include

//fuctions

voidreplay(char&ans);//询问玩家是否再玩一局

voidhit(int&total);//要一张牌

voiddeal(int&player,int&cpu,int&playerturns,int&cputurns);//为计算机和玩家

各发两张牌

voidBET(int&bet,int&money);//下注

voidprint(intwins,intlo,intdraw,intmoney);//输出最后结果

voidrules();//输出游戏规则

voidresults(intplayer,intcpu,intbet,int&money,int&draw,int&win,int&lo);

//判断一局的结果

/*diyige*/

//

#include

#include

voidwait(intmilli)//暂停,milli毫秒

{

clock_tstart;

start=clock();

..

while((clock()-start)

}

//

#include

#include

#include

#include

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

voidpau()

//暂停,任按一键继续

{

cout<<"任按一键继续"<

getch();

}

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

intGetInt(intL=0,intH=100)

{

intent;

cout<<"PleaEnterANumberBetween"<

cin>>ent;

while((entH))

..

{

cout<<"Error"<

cout<<"Valuemustbebetween"<

cin>>ent;

}

return(ent);

}

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

voidsign()

//DisplaysISAACSHAFFER

{

cout<<"ThisProgramWasWrittenByIsaacShaffer"<

}

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

intrandom(longhi,longlo)

//ThisProgramFindsARandomNumberBetweenHiandLow

{

intran;

srand((unsigned)time(NULL));

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

return(ran);

}

..

//

intmain()

{

intplayer=0,cpu=0,win=0,lo=0,draw=0,playerturns=0,cputurns=0,money=0,bet;

charans;

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

rules();

cout<<"ttt请问是否玩牌:";

cin>>ans;

if((ans=='y')||(ans=='Y'))//检查输入是否为Yes

{

cout<<"ttt您的赌本为100美元"<

money=100;

cout<<"ttt";

pau();//暂停,任按一键继续

}

el

{

return(0);

}

do{

system("cls");

..

if(money<0)//看看有无赌本

{

cout<<"对不起,您没赌本了"<

return(0);

}

BET(bet,money);//下注的程序

deal(player,cpu,playerturns,cputurns);//给玩家和计算机各发两张牌

do{

cout<<"tttWouldYouLikeToHitorStay:";//询问是否要牌

cin>>ans;

if((ans=='h')||(ans=='H'))//如果玩家要牌

{

playerturns++;//玩家手中的牌数增加一张

if(playerturns>5)//判断玩家手中的牌数是否超过5张

{

cout<<"ttt你手中的牌不能超过5张牌";//若超过5张不能继续要牌

}

}

if((playerturns<6)&&(ans=='h'))//判断是否符合玩家要牌的条件

{

..

cout<

hit(player);//调用发牌程序

}

}while((ans=='h')||(ans=='H'));//继续询问玩家是否要牌

for(;(cpu<16)&&(cputurns<6);cputurns++)//计算机开始要牌的条件

{

cout<

cout<<"ttt计算机要了一张牌"<

hit(cpu);//调用发牌程序

}

cout<

cout<

cout<<"ttt计算机的牌面为:"<

cout<<"ttt您的牌面为:"<

cout<

results(player,cpu,bet,money,draw,win,lo);//判断输赢

replay(ans);//询问是否继续玩牌

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

print(win,lo,draw,money);//游戏结束,输出结果

cout<

cout<<"tttt";

return(0);

..

}

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

----------

voidrules()//游戏规则

{

cout<<"ttWELCOMETOISAACSHAFFER'SBLACKJACKGAME"<

cout<<"tttHEREARESOMESIMPLERULES"<

cout<<"ttt1:YouCanonlyhaveamaxof5cards."<

cout<<"ttt2:Ifyoubustyouautomaticallylo."<

cout<<"ttt3:Ifyouwinyouwindoublewhatyoubet."<

cout<<"ttt4:TheDealerstopsatorafter16."<

cout<<"tttt";

pau();

}

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

-----------

voidBET(int&bet,int&money)//接收玩家下注

{

system("cls");

cout<<"ttt您现有的:$"<

cout<<"ttt您要下的赌注是:";

cin>>bet;

if(bet<0)

..

{

bet=bet*-1;

}

money=money-bet;

}

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

-----------

voiddeal(int&player,int&cpu,int&playerturns,int&cputurns)

//为计算机和玩家各发两张牌

{

intplayercard1,playercard2,cpucard1,cpucard2;

playerturns=2;

cputurns=2;

playercard1=random(13,1);//取得13与1之间的随机数

cout<<"ntttDEALINGHAND"<

wait(350);//等待350ms

playercard2=random(13,1);

wait(150);

cpucard1=random(13,1);

wait(350);

cpucard2=random(13,1);

if(playercard1>=10)//若牌面的点数大于10,按10来计点数

..

{

playercard1=10;

}

if(playercard2>=10)

{

playercard2=10;

}

if(cpucard1>=10)

{

cpucard1=10;

}

if(cpucard2>=10)

{

cpucard2=10;

}

player=playercard1+playercard2;//玩家两张牌的总点数

cpu=cpucard1+cpucard2;//计算机两张牌的总点数

cout<<"ttt现有您的牌面总数是:"<

cout<<"["<

cout<<"["<

cout<

cout<<"ttt计算机有一张"<

..

cout<

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

}

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

-----------

voidhit(int&total)//要一张牌

//Thisfuctionistodealacardandaddittothetotal

{

intcard;

card=random(13,1);

if(card>=10)

{

card=10;

}

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

cout<<"ttt牌面是:"<

cout<<"ttt总的牌面是:"<

}

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

voidresults(intplayer,intcpu,intbet,int&money,int&draw,int&win,int&lo)

//判断一局的结果

{

if(cpu==player)//平局

..

{

cout<<"ttt平局"<

draw++;

}

if(player>21)//玩家超过了21点

{

cout<<"ttt很遗憾,你输了"<

lo++;

}

el

{

if(cpu

{

cout<<"nttt恭喜你,你赢了";

money=money+(bet*2);

win++;

}

}

if(cpu>21)//计算机超过了21点

{

cout<<"ttt计算机输了"<

..

if(player<21)

{

cout<<"nttt恭喜你,你赢了";

win++;

money=money+(bet*2);

}

}

el

{

if(cpu>player)

{

cout<<"ttt很遗憾,你输了"<

lo++;

}

}

}

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

voidreplay(char&ans)//询问玩家是否再玩一局

{

cout<<"nttt您是否想再玩一局:";

cin>>ans;

}

..

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

voidprint(intwins,intlo,intdraw,intmoney)

{

cout<<"tttt赢的次数:"<

cout<<"tttt输的次数:"<

cout<<"tttt平的次数:"<

cout<<"tttt您的赌本:"<

}

还有。。。#include

#include

#defineNx

voidmain(void)

{

charstr[20];

charch;

inti=0;

cout<<"输入密码:";

();

ch=getch();

while(ch!=x)

{

..

str[i++]=ch;

cout<<'*';

();

ch=getch();

}

str[i]=0;

}

本文发布于:2023-03-09 21:34:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678368857197567.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:21点游戏.doc

本文 PDF 下载地址:21点游戏.pdf

标签:21点游戏
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图