C++程序设计21点纸牌游戏系统的设计与实现

**

C++程序设计21点纸牌游戏系统的设计与实现

**
一个单人游戏的类,一个多人游戏的类,并且由多人派生出单人游戏的类。

代码

#include<iostream>
#include<windows.h>
#include<cstring>
#include<time.h>
#include<fstream>
#include<iomanip>
#define N 10
using namespace std;

void StartMenu();  //类的声明和函数的声明。
int Menu();
void Exit();

char PokeColor[4] = {
   3,4,5,6};
char PokeNum[13] = {
   '2','3','4','5','6','7','8','9','I','J','Q','K','A'};
int n,stake,h=0,flag=0;                    //玩家总数        //记录庄家姓名

extern int n,flag;      //局外变量。

class Game{
   
protected:
	  int color[N][N];
      int num[N][N];
	  int currentOdds[N];
	  char name[N][20] ;
	  int money[N];
	  int score[N];
	  int visit[N];
	  int hands[N];
	  int e[N];
public:
	Game(){
                                   //构造函数
        for(int i=0;i<N;i++){
                //初始化
		money[i]=1000;
		score[i]=0;
		e[i]=0;
		hands[i]=0;
		visit[i]=0;
		currentOdds[i]=0;
		}
	}
	~Game(){
   }
	 void Help();                              //帮助
	 void ShowPoke(char,char);          //显示单个扑克函数
	 void Show(int);                    //显示函数
	 bool GetCard(int,int);            //发牌函数
     bool choice();                   //信息筛选函数
	 void SetOdds(int);              //加注函数
	 void InitUser();               //初始化输入函数
   	 void Save();                  //保存记录函数
	 int Judge(int);               //判断函数
	 void Continue();              //继续游戏函数,读取文件
	 virtual void begin(int);      //重新开始函数,用虚函数实现
	 void Result(int);             //计算结果函数
};
class game:public Game
{
   
public:
   bool	computer();
   virtual void begin(int);
   void Save();
   void Continue();
   game():Game(){
   }
};
void StartMenu()  //游戏起始界面,基类game
{
   
	char load[]="▋☆☆★☆☆█";
	cout<<"\t╔═════════════════════════════════════╗\t\n";
	cout<<"\t ≧▂≦ 欢迎来到二十一点纸牌游戏 ≧▂≦\t\n\t\t";
	cout<<"\n\t╚═════════════════════════════════════╝\n"<<endl;
	cout<<"Loading  success!"<<endl;
}
int Menu() //菜单显示
{
   
	char ch[5];
	while(1){
   
	cout<<"┏┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┓\n";
	cout<<setw(15)<<" "<<"菜单"<<endl;
	cout<<setw(25)<<"0:继续上次游戏"<<endl;
	cout<<setw(22)<<"1:单人游戏\n";
	cout<<setw(22)<<"2:多人游戏\n";
	cout<<setw(18)<<"3:帮助\n";
	cout<<setw(18)<<"4:退出\n";
	cout<<"┗┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┛\n";
	cout<<"请选择:";
	while(cin>>ch){
   
		if('0'<=ch[0]&&ch[0]<='4') break;
		else cout<<"选择无效!,请重新输入:";
	}
	switch(ch[0]){
   
	    case '0':return 0;
		case '1':return 1;
		case '2':return 2;
		case '3':return 3;
		case '4':return -1;
	}
	}
}
void Game::Help(){
                   //帮助函数,
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C#所作的课程设计,里面包含源代码以及任务书和说明书,适应广大要做课程设计的学生使用21一般用到1-8副。庄家给每个玩家发两张面朝上;给自己发两张,一张面朝上(叫明),一张面朝下(叫暗)。大家手中扑克数的计算是:K、Q、J 和 10 都算作 10 。 A 既可算作1 也可算作11 ,由玩家自己决定。其余所有2 至9 均按其原面值计算。首先玩家开始要,如果玩家拿到的前两张是一张 A 和一张10,就拥有黑杰克 (Blackjack);此时,如果庄家没有黑杰克,玩家就能赢得1.5 倍的赌金(2 赔 3)。没有黑杰克的玩家可以继续拿,可以随意要多少张。目的是尽量往21靠,靠得越近越好,最好就是21了。在要的过程中,如果所有的加起来超过21,玩家就输了——叫爆掉(Bust),游戏也就结束了。假如玩家没爆掉,又决定不再要了,这时庄家就把他的那张暗打开来。假如他现在的两张加起来小于或等于16(Hit),他就必须继续给他自己发(不管他的数是否比你大),一直发到他的数大于等于17为止。如果庄家的总数等于或多于17 ,则必须停(Stand)。庄家在给自己发的过程中,假如他爆掉了,那他就输了。假如他没爆掉,那么你就与他比数大小,大为赢。一样的数为平手,你可以把你的赌注拿回来。 如果拿拿到手中有5张,并且总数不到21,那这种情况能压住一切型(当然5张加起来一共21更好)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值