C++扑克牌类的设计

C++扑克牌

1、设计扑克类Card:主要属性有花色和点数;主要方法有初始化、输出、比较大小等
2、设计一副扑克牌类Cards:主要属性包括扑克对象数组;主要方法有初始化、洗牌、输出等。
3、编写测试程序。

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <algorithm>
#include <map>
using namespace std;
class Card
{
	public:
		string color;
		string point;
		Card(string color, string point);
		Card(string point);
		void display();
		void battle(Card card1);

};
class Cards
{
    public:
        vector<Card> card;
        Cards();
		void display_all();
        void shufflePoker();
};

Card::Card(string color, string point)
{
    this->color = color;
    this->point = point;
}

Card::Card(string point)
{
    this->color = "";
    this->point = point;
}


void Card::display()
{
	string s = this->color + this->point;
    cout<<s<<endl;
}

void Card::battle(Card card1)
{
	map<string, int> p;
	map<string, int> c;
	p["A"] = 1;
	p["2"] = 2;
	p["3"] = 3;
	p["4"] = 4;
	p["5"] = 5;
	p["6"] = 6;
	p["7"] = 7;
	p["8"] = 8;
	p["9"] = 9;
	p["10"] = 10;
	p["J"] = 11;
	p["Q"] = 12;
	p["K"] = 13;
    p["小王"] = 14;
	p["大王"] = 15;

	c["黑心"] = 4;
	c["红心"] = 3;
	c["草花"] = 2;
	c["方块"] = 1;
	c[""] = 0;

	if(p[card1.point] > p[this->point])
		cout<<card1.color + card1.point + "  大于  " + this->color + this->point<<endl;
	else if(p[card1.point] < p[this->point])
		cout<<card1.color + card1.point + "  小于  " + this->color + this->point<<endl;
	else if(p[card1.point] == p[this->point])
	{
        if(c[card1.color] > c[this->color])
			cout<<card1.color + card1.point + "  大于  " + this->color + this->point<<endl;
		else if(c[card1.color] < c[this->color])
			cout<<card1.color + card1.point + "  小于  " + this->color + this->point<<endl;
		else
			cout<<card1.color + card1.point + "  等于  " + this->color + this->point<<endl;
	}
}

Cards::Cards()
{
    string colors[]={"黑心", "红心", "草花", "方块"};
    string numbers[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<13;j++)
        {
            this->card.push_back(Card(colors[i], numbers[j]));
        }
    }
    this->card.push_back(Card("", "大王"));
    this->card.push_back(Card("", "小王"));

}

void Cards::shufflePoker()
{
    srand((unsigned int)time(0));
	random_shuffle(this->card.begin(), this->card.end());


}

void Cards::display_all()
{
	for(int i=0;i<card.size();i++)
    {
        cout<<this->card[i].color;
		cout<<this->card[i].point + "\t";
    }
    cout<<endl;
}


int main()
{
    cout<<"初始化扑克牌:"<<endl;
	Card card("黑心", "2");
	card.display();
    Card card2("大王");
    card2.display();
    cout<<"比较大小:"<<endl;
    card2.battle(card);
    cout<<"初始化扑克牌:"<<endl;
	Card card1("红心","1");
	card1.display();
	Card card3("黑心", "2");
	card3.display();
	cout<<"比较大小:"<<endl;
	card3.battle(card);
	cout<<"比较大小:"<<endl;
    card.battle(card1);
    cout<<"初始化扑克牌序列:"<<endl;
    Cards cards;
	cards.display_all();
	cout<<"开始洗牌:"<<endl;
	cards.shufflePoker();
	cards.display_all();
	cout<<"洗牌结束"<<endl;
    cout<<"开始洗牌:"<<endl;
	cards.shufflePoker();
	cards.display_all();
	cout<<"洗牌结束"<<endl;
    return 0;
}


在这里插入图片描述运行结果

  • 9
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值