📄 21dianpai.cpp
字号:
//-----------------------几项声明!!!--------------------------
//21点的扑克牌游戏
//运用在扑克牌游戏中的函数
//这个程序只是一个小小的扑克牌游戏
//将其修改成了中文版
//本金被修改成可以由玩家自己输入
//修改了一个平局后玩家仍会被扣除赌金的错误
//修改了一个剩余资金为0元后仍能继续下注的错误
//某些不对称的格式被稍加修改,程序运行起来更加美观
//电脑被修改成在18或18点以上不在继续拿牌
//资金与赌金的输入被规范起来了,输入错误的话将不能继续执行程序
//添加了小财神系统,能使你的赌金翻倍,但同时风险也变为两倍
//------------------------------------------------------------
#include<iostream.h>
#include<stdlib.h> //以上为预处理
#include "utility.h" //包含"utility.h"头文件
#include "wait.h" //包含"wait.h"头文件
void replay(char &ans); //再玩一次游戏
void hit(int &total); //再要一张牌
void deal(int &player,int &cpu,int &playerturns,int &cputurns); //处理牌
void BET(int &bet,int &money); //下赌注
void print(int wins,int lose,int draw,int money); //显示最后的钱数
void rules(); //介绍规则
void results(int player,int cpu,int bet,int &money,int &draw,int &win,int &lose); //显示赢家
int main(){//主函数
int player=0,cpu=0,win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=0,bet; //初始化参数
char ans; //设定字符串参数
system("cls"); //执行系统命令cls清屏
rules(); //执行rules函数
cout<<"\t\t\t您确定要玩这个21点的扑克牌游戏吗?(是:y;不是:n):"; //询问玩家是否玩这个游戏
cin>>ans; //让玩家输入yes(玩)或no(不玩)
if((ans=='y')||(ans=='Y')) //玩家确定要玩这个游戏
{
cout<<endl; //空一行
cout<<"\t\t\t请您输入您的本金(1-10000元):"; //由玩家输入一定的本钱
cin>>money; //输入
while(money<1||money>10000){ //输入错误
cout<<"\t\t\t您输入的本金不在此范围,请重新输入!"<<endl;
cout<<"\t\t\t请您输入您的本金(1-10000元):";
cin>>money; //重新输入
}
cout<<"\t\t\t"; //空格
pause(); //暂停
}
else //玩家不想玩这个游戏
{
cout<<"再见!"<<endl;
return(0); //退出程序
}
do{
system("cls"); //执行系统命令cls清屏
if(money<=0) //察看玩家是否没有本钱了
{
cout<<"很抱歉,您输光了所有的钱,下次再来吧!"<<endl; //如果玩家没有本钱了
return(0); //退出程序
}
BET(bet,money); //执行bet函数
cout<<endl; //空一行
deal(player,cpu,playerturns,cputurns); //处理牌
do{
cout<<"\t\t\t您还想再要一张牌吗?(要:h;不要:s):"; //询问玩家是否想再要一张牌
cin>>ans; //玩家输入hit或stay
if((ans=='h')||(ans=='H')) //玩家想再要一张牌
{
playerturns++; //把这张牌的点数加到玩家原有的总点数上
if(playerturns>5) //察看玩家是否能够继续拿牌
{
cout<<endl;
cout<<"\t\t\t您最多只能拿五张牌"; //提示玩家已经拿了五张牌
}
}
if((playerturns<6)&&(ans=='h')) //玩家继续拿牌
{
cout<<endl; //空一行
hit(player); //执行hit函数
}
}while((ans=='h')||(ans=='H')); //玩家拿牌之后
for(;(cpu<18)&&(cputurns<6);cputurns++) //确定电脑是否继续拿牌
{
cout<<endl; //空一行
cout<<"\t\t\t您的对手拿了一张牌"<<endl; //电脑拿了一张牌
hit(cpu); //执行hit函数
}
cout<<endl; //空一行
cout<<"\t\t\t--------------------"<<endl;
cout<<"\t\t\t本局游戏结束!"<<endl; //一局比赛结束
cout<<"\t\t\t您的对手总点数为:"<<cpu<<endl; //显示电脑的总点数
cout<<"\t\t\t您的总点数为:"<<player<<endl; //显示玩家的总点数
cout<<"\t\t\t--------------------"<<endl;
cout<<endl; //空一行
results(player,cpu,bet,money,draw,win,lose); //判断玩家是否获胜
replay(ans); //执行replay函数
}while((ans=='y')||(ans=='Y')); //玩家想再玩一次
print(win,lose,draw,money); //输出最后的结果
cout<<endl; //空一行
cout<<"\t\t"; //空格
return(0); //退出程序
}
//---------------------------------------------------------------------------------------
void rules()
//这个函数交待了这个扑克牌游戏的规则
{
cout<<endl;
cout<<"\t\t\t********* 21点扑克牌游戏系统 ***********"<<endl;
cout<<"\t\t\t******* 开发者:05405137--吴易 **********"<<endl;
cout<<endl;
cout<<"\t\t\t******************************************"<<endl;
cout<<"\t\t\t欢迎您来到21点的扑克牌游戏!"<<endl;
cout<<"\t\t\t下面是一些基本的游戏规则:"<<endl;
cout<<"\t\t\t1:您最多可以拿五张牌."<<endl;
cout<<"\t\t\t2:如果您爆裂了您将输掉这一局."<<endl;
cout<<"\t\t\t3:如果你获胜你将获得双倍的赌金."<<endl;
cout<<"\t\t\t4:您的对手将在18点或18点以上不再继续要牌."<<endl;
cout<<"\t\t\t5:最后将显示您所有的比赛结果."<<endl;
cout<<"\t\t\t6:只要不输光所有的资金,您可以一直玩下去."<<endl;
cout<<"\t\t\t7:新增了小财神系统."<<endl;
cout<<"\t\t\t******************************************"<<endl;
cout<<"\t\t\t\t"; //空格
pause(); //暂停
}
//----------------------------------------------------------------------------------------
void BET(int &bet,int &money)
//这个函数找出玩家的赌金
{
char ans2; //设定字符串参数
system("cls"); //执行系统命令cls清屏
cout<<"\t\t\t您现在的资金为:"<<money<<"元"<<endl; //玩家已有的钱数
cout<<"\t\t\t请输入您的赌金(元):"; //玩家想要赌的钱数
cin>>bet; //输入赌金
while(bet<=0||bet>money){ //赌金非正
cout<<"\t\t\t您输入的赌金不正确,请重新输入!"<<endl;
cout<<"\t\t\t请输入您的赌金(元):";
cin>>bet; //重新输入
}
cout<<endl; //空一行
cout<<"\t\t\t小财神提醒您:"<<endl;
cout<<"\t\t\t我能把你的赌金变为2倍哦!不过风险也变为2倍哦!"<<endl;
cout<<endl; //空一行
cout<<"\t\t\t您想要启用小财神系统吗?(要:y;不用了:n):"; //新增功能:小财神系统
cin>>ans2;
if((ans2=='y')||(ans2=='Y')) //启用小财神系统
{
bet=bet*2; //赌金翻倍
cout<<endl; //空一行
cout<<"\t\t\t小财神将您的赌金变为了"<<bet<<"元"<<endl;
}
money=money-bet; //本金减去赌金
}
//----------------------------------------------------------------------------------------
void deal(int &player,int &cpu,int &playerturns,int &cputurns)
//这个函数处理牌
{
int playercard1,playercard2,cpucard1,cpucard2; //定义玩家和电脑的前两张牌
playerturns=2; //玩家拿两张牌
cputurns=2; //电脑拿两张牌
playercard1=random(13,1); //玩家的第一张牌在1-13内任取
cout<<"\t\t\t本局游戏开始!"<<endl;
cout<<"\n\t\t\t请稍等..."<<endl; //输出正在等待电脑拿牌
wait(350); //等待
playercard2=random(13,1); //玩家的第二张牌在1-13内任取
wait(150); //等待
cpucard1=random(13,1); //电脑的第一张牌在1-13内任取
wait(350); //等待
cpucard2=random(13,1); //电脑的第二张牌在1-13内任取
if(playercard1>=10) //如果玩家的第一张牌大于或等于10
{
playercard1=10; //该牌取10
}
if(playercard2>=10) //如果玩家的第二张牌大于或等于10
{
playercard2=10; //该牌取10
}
if(cpucard1>=10) //如果电脑的第一张牌大于或等于10
{
cpucard1=10; //该牌取10
}
if(cpucard2>=10) //如果电脑的第二张牌大于或等于10
{
cpucard2=10; //该牌取10
}
player=playercard1+playercard2; //玩家的点数为第一张牌与第二张牌之和
cpu=cpucard1+cpucard2; //电脑的点数为第一张牌与第二张牌之和
cout<<endl; //空一行
cout<<"["<<playercard1<<"]"; //输出玩家拿到的第一张牌
cout<<"["<<playercard2<<"]"; //输出玩家拿到的第二张牌
cout<<"\t\t\t您现有的总点数为:"<<player<<endl; //输出玩家的总点数
cout<<endl; //空一行
cout<<"[*]"<<"["<<cpucard2<<"]"; //隐藏电脑的第二张牌
cout<<"\t\t\t您的对手有一张"<<cpucard2<<endl; //输出电脑拿到的第一张牌
cout<<endl; //空一行
}
//----------------------------------------------------------------------------------------
void hit(int &total)
//这个函数处理一张牌,然后把它加到总数上
{
int card; //定义一张牌
card=random(13,1); //牌的点数在1-13内任取
if(card>=10) //如果牌的点数大于或等于10
{
card=10; //取10
}
total=total+card; //把点数加到总数上
cout<<"\t\t\t这张牌的点数为:"<<card<<endl; //输出该牌的点数
cout<<"\t\t\t总点数为:"<<total<<endl; //输出最后的总数
}
//-----------------------------------------------------------------
void results(int player,int cpu,int bet,int &money,int &draw,int &win,int &lose)
//这个函数判断谁是赢家
{
if(cpu==player) //如果玩家与电脑的点数相等
{
cout<<"\t\t\t这局游戏您与您的对手打平!"<<endl; //输出平局
money=money+bet;
draw++; //平局回合数+1
}
if(player>21) //如果玩家的点数超过21
{
cout<<"\t\t\t很抱歉,您爆裂了,您输了这一局!"<<endl; //输出玩家爆裂
lose++; //失败回合数+1
}
else
{
if(cpu<player) //电脑的点数小于玩家
{
cout<<"\n\t\t\t恭喜您获胜了!"; //玩家取胜
money=money+(bet*2); //赌金翻倍
win++; //胜利回合数+1
}
}
if(cpu>21) //如果电脑的点数超过21
{
cout<<"\t\t\t您的对手爆裂了!"<<endl; //输出电脑爆裂
if(player<21) //同时玩家没有爆裂
{
cout<<"\n\t\t\t恭喜您获胜了!"; //玩家取胜
win++; //胜利回合数+1
money=money+(bet*2); //赌金翻倍
}
}
else
{
if(cpu>player) //电脑的点数大于玩家
{
cout<<"\t\t\t很抱歉,您输了!"<<endl; //电脑取胜
lose++; //失败回合数+1
}
}
}
//-----------------------------------------------------------------
void replay(char &ans) //再玩一次
{
cout<<"\n\t\t\t您还想再玩一局这个游戏吗?(是:y;不是:n):"; //询问玩家是否还想再玩一次
cin>>ans; //等待玩家输入
}
//-----------------------------------------------------------------
void print(int wins,int lose,int draw,int money) //输出游戏的结果
{
cout<<endl; //空一行
cout<<"\t\t\t****************************"<<endl;
cout<<"\t\t\t下面是您的最后比赛结果:"<<endl;
cout<<"\t\t\t胜利回合数:"<<wins<<endl;
cout<<"\t\t\t失败回合数:"<<lose<<endl;
cout<<"\t\t\t平局回合数:"<<draw<<endl;
cout<<"\t\t\t所剩余资金:"<<money<<"元"<<endl;
cout<<"\t\t\t****************************"<<endl;
}
//课程设计到此结束,谢谢指导! ------05405137 吴易
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -