📄 4.5.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 + -