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;
}
运行结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)