..
此程序为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((ent
..
{
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
留言与评论(共有 0 条评论) |