⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 21dianpai.cpp

📁 21点牌 简单的游戏
💻 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 + -