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;elsecout<<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;
}

运行结果

C++扑克牌类的设计相关推荐

  1. python中扑克牌类设计_Python类的基础设计、使用

    类是事物功能和属性的抽象,对象是类的实例化.就像人人都知道小汽车可以干什么什么的,但光想小汽车如何好是没有用的,得开车或坐才能感受到小汽车的好.人脑里的小汽车是抽象的,即类,而坐上的某辆车是小汽车的实 ...

  2. 转:软件设计漫谈之三:30分钟掌握面向对象类的设计原则

    转自:http://blog.csdn.net/yunhua_lee/article/details/5105524 30分钟掌握面向对象类的设计原则 看过设计模式的人不少,但看过Martin的面向对 ...

  3. VS 2010 通过 Architecture创建UML类图设计

    [赛迪网报道]类是对应用领域或应用解决方案中概念的描述.类图以类为中心进行组织,类图中的其他元素或属于某个类,或与类相关联.类也是对象的集合,展示了对象的结构及与系统交互的行为,其目的是显示建模系统的 ...

  4. 一文讲透非标品的商品类目设计

    www.pmcaff.com 本文为作者 百转 于社区发布 只要做电商,商品类目设计就是绕不开的一环.好的类目设计能让供需双方更快.更好定义或找到所关心的商品,是整个电商体系的地基,是构建并链接各个模 ...

  5. java 重启线程_java 可重启线程及线程池类的设计(详解)

    了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的 ...

  6. Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出

    10.10(Queue类)10.6节给出一个Stock类,设计一个名为Queue的类用于存储整数 题目 程序 破题 代码 Test10.java Test10_Queue.java UML 题目 程序 ...

  7. Java黑皮书课后题第10章:10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点

    10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点 题目 程序 代码 Test4.java Test4_MyPoint.java 运行实例 UML 题目 程序 ...

  8. Java黑皮书课后题第10章:10.3(MyInteger类)设计一个名为MyInteger的类

    10.3(MyInteger类)设计一个名为MyInteger的类 题目 程序说明 代码 Test3.java Test3_MyInteger.java 运行实例 UML 题目 程序说明 测试程序:T ...

  9. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。

    Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...

  10. Java黑皮书课后题第9章:9.8(Fan类)设计一个名为Fan的类来代表风扇

    9.8(Fan类)设计一个名为Fan的类来代表风扇 题目 破题 代码 Test8 Test8_Fan 执行结果 UML 题目 破题 Test8:测试程序 Test8_Fan:实现题目要求 代码 Tes ...

最新文章

  1. 企业管理软件的需求描述方法
  2. 15.1 自定义分词器
  3. 从头写一个Cucumber测试(二) Cucumber Test
  4. 将CSS CLIP属性应用在:扩展覆盖效果
  5. 基于tensorflow深度学习的中文的命名实体识别
  6. netty LEAK: ByteBuf.release() was not called before it's garbage-collected
  7. paip.百度空间 JAVA程序发文总结
  8. 我的世界起床战争java 版服务器_我的世界中国版起床战争下载-我的世界中国版起床战争服务器_5577安卓网...
  9. QT调用巴斯勒相机的使用
  10. 【渝粤教育】 国家开放大学2020年春季 1332中文学科论文写作 参考试题
  11. 在 SQL 中计算总行数的百分比
  12. 如何快速查询京东快递物流正在派送中的单号
  13. 集美大学计算机毕业论文,集美大学毕业论文要求.doc
  14. 张柏芝、谢霆锋、陈冠希近半年行踪关系图,这个图很厉害,可以作为思维导图的工具...
  15. 解决数据一致性方案(库存问题)
  16. R语言 Rstudio对本地文件数据文件的读写和查看设置当前工作路径
  17. Basic4IOS (B4I) New Version Crack
  18. jquery实现二级导航下拉菜单效果实例
  19. Windows c# 生成验证码图片
  20. 关于智慧团建忘记密码的解决方法

热门文章

  1. Linux 打开文件显示: No such file or directory
  2. 申请免费域名、配置域名以及https证书设置
  3. np.eye()和np.identity()
  4. 【日常训练赛】C - Prove Him Wrong
  5. 服务器系统盘怎么分区,服务器系统盘分区
  6. 二值化神经网络——BNN
  7. 这么简单的道理,猩猩都懂,我们却忘了
  8. HDLC和PPP协议总结
  9. 【hdu4609】 3-idiots FFT
  10. c语言 sin1怎么写,c语言sin30怎么写