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

📄 4.5.cpp

📁 面向对象技术作业银行系统
💻 CPP
字号:
#include <iostream>
#include <cstdlib>
#include <ctime>

/*
*@Title: CardGame
*@Author: Jiaong
*@Version: 1.0
*@Date: 2003.12.19
*@ 本程序主要通过类来实现各种扑克牌;
*/

using namespace std;


enum color{RED,YELLOW,BLUE,BLACK};										//代表四种花色;
enum VALU{A,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,J,Q,K};		//代表牌的值;

typedef struct															//一张牌结构;
	{
		enum color COL;													//花色;
		VALU value;														//	值;
		int flag;														//判断是否分发;
	}CARDS;																//一张牌结构;

class CardGame															  //基类;
{
	public:
		CardGame()														  //构造函数,给牌付初值;
		{															
			for(int i=RED;i<=BLACK;i++)
				for(int j=A;j<=K;j++)
				{
					ca[i*13+j].COL=(enum color)i;
					ca[i*13+j].value=(enum VALU)j;
					ca[i*13+j].flag=false;
				}
		};
		~CardGame()
		{};
		void print()													 //打印函数;
		{
			for(int i=0;i<=51;i++)
				cout<<"ca["<<i<<"]:"<<" "<<ca[i].flag<<","<<ca[i].COL<<","<<ca[i].value<<";"<<endl;
		}
	protected:
		CARDS ca[52];													//存储52张牌的变量;
	
};

class Bridge  : public CardGame											//Bridge 类;
{
	public:
		void deal()														//发牌的deal函数
		{
			int i,r;													
			srand(time(0));	 											//用随机函数钱的初始化函数,通过取系统时间保证每次均不一样。
			for(int p=0;p<=51;p++)										//初始化剩余的牌;
			{	
				car[p].COL=ca[p].COL;
				car[p].value=ca[p].value;
				car[p].flag=ca[p].flag;
			}
			for(int j=0;j<=12;j++)										//开始发牌,一共13轮;
			for(int k=0;k<4;k++)
			{	
				i=rand()%(52-j*4-k);									//产生随机数;
				A[k][j].COL=car[i].COL;									//发牌;
				A[k][j].value=car[i].value;
				A[k][j].flag=1;
				for(r=i;r<52-j*4-k;r++)									//发牌后剩余牌的处理;
				car[r]=car[r+1];
			}
		}
		virtual print()													//打印函数;
			{
				for(int k=0;k<4;k++)
					{
						for(int i=0;i<=12;i++)
							cout<<"A["<<k<<"]["<<i<<"]:"<<" "<<A[k][i].flag<<","<<A[k][i].COL<<","<<A[k][i].value<<";"<<endl;
						cout<<endl;
					}
			}
	protected:
		CARDS car[52];													//当前剩下的牌;
		CARDS A[4][13];													//分成的四手牌;
	
};
class Pocker  : public CardGame											//Pocker 类
{
	public:
		void deal()
		{																//tu为发牌轮数,n为人数,
			int tu=count;
			int n=ncount;
			int i,r;
			srand(time(0));	 
			for(int p=0;p<=51;p++)
			{	
				car[p].COL=ca[p].COL;
				car[p].value=ca[p].value;
				car[p].flag=ca[p].flag;
			}
			for(int j=0;j<tu;j++)										 //开始发牌,一共tu轮;
			for(int k=0;k<n;k++)										 //每轮n人;
			{
				i=rand()%(52-j*n-k);									//产生随机数;
				ARR[k][j].COL=car[i].COL;
				ARR[k][j].value=car[i].value;
				ARR[k][j].flag=1;
				for(r=i;r<52-j*n-k;r++)
				car[r]=car[r+1];
			}
		}

		void init()
		{
			cout<<"There will be N men playing cards"<<endl;
			cout<<"Please input the N:"<<endl;
			cin>>ncount;
			if(ncount<2||ncount>7) 
			{
				cout<<"Error!";
				ncount=7;
			}
			cout<<"Need P turnes"<<endl;
			cout<<"please input the P:"<<endl;
			cin>>count;
			if(count<0||count>((int)52/ncount))
			{
				cout<<"Error!"; 
				count=(int)52/ncount;
			}
		}
		virtual print()																//打印;
		{
			for(int i=0;i<ncount;i++)
			{
				for(int j=0;j<count;j++)
					cout<<"ARR["<<i<<"]["<<j<<"]:"<<" "<<ARR[i][j].flag<<","<<ARR[i][j].COL<<","<<ARR[i][j].value<<";"<<endl;
				cout<<endl;
			}
		}
	protected:
		int count,ncount;
		CARDS car[52];																	//当前剩下的牌;
		CARDS ARR[7][26];																//分成的n手牌;
	
};

int main()
{
	Pocker card;
	card.init();
	card.deal();
	card.print();
	delete &card;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -