C++ 扑克牌

题目

完成一副扑克牌的创建洗牌发牌

源代码

  • Poker.h
#include <iostream>
#include <string>
using namespace std;
class Poker
{
public:
 Poker();
 Poker(int, int);
 string Suit();
 string Rank();
 string print();
private:
 int suit;
 int rank;
};
  • Cards.h
#include "Poker.h"
#include <cstdlib>
#include <ctime>
#include <algorithm>
class Cards
{
public:
 Cards();
 void create();
 void shuffle();
 void players();
 void player1();
 void player2();
 void player3();
private:
 Poker Pokers[55];
 Poker Player1[19];
 Poker Player2[19];
 Poker Player3[19];
};
  • Poker.cpp
#include "Poker.h"
Poker::Poker()
{
 suit = 0;
 rank = 0;
}
Poker::Poker(int s, int r)
{
 suit = s;
 rank = r;
}
string Poker::Suit()
{
 string str;
 switch (suit)
 {
 case 1: str = "红桃";
  break;
 case 2: str = "方片";
  break;
 case 3: str = "黑桃";
  break;
 case 4: str = "梅花";
  break;
 }
 return str;
}
string Poker::Rank()
{
 string str;
 switch (rank)
 {
 case 1: str = " A";
  break;
 case 2: str = " 2";
  break;
 case 3: str = " 3";
  break;
 case 4: str = " 4";
  break;
 case 5: str = " 5";
  break;
 case 6: str = " 6";
  break;
 case 7: str = " 7";
  break;
 case 8: str = " 8";
  break;
 case 9: str = " 9";
  break;
 case 10: str = "10";
  break;
 case 11: str = " J";
  break;
 case 12: str = " Q";
  break;
 case 13: str = " K";
  break;
 case 14: str = "小  王";
  break;
 case 15: str = "大  王";
  break;
 }
 return str;
}
string Poker::print()
{
 return "【" + Suit() + Rank() + "】";
}
  • Cards.cpp
#include "Cards.h"
Cards::Cards()
{
 int count = 1;
 for (int i = 1; i <= 4; i++)
 {
  for (int j = 1; j <= 13; j++)
  {
   Pokers[count++] = Poker(i, j);
  }
 }
 Pokers[count++] = Poker(0, 14);
 Pokers[count++] = Poker(0, 15);
}
void Cards::create()
{
 for (int i = 1; i <= 54; i++)
 {
  cout << Pokers[i].print() << '\t';
  if (i % 6 == 0)
   cout << endl;
 }
}
void Cards::shuffle()
{
 srand((unsigned)time(NULL));
 for (int i = 1; i <= 54; i++)
 {
  swap(Pokers[i], Pokers[rand() % 54 + 1]);
 }
 for (int i = 1; i <= 54; i++)
 {
  cout << Pokers[i].print() << '\t';
  if (i % 6 == 0)
  {
   cout << endl;
  }
 }
}
void Cards::players()
{
 int i = 1;
 for (int i = 1; i <= 18; i++)
 {
  Player1[i] = Pokers[i];
 }
 for (int j = 1; i <= 36; i++)
 {
  Player2[j++] = Pokers[i];
 }
 for (int k = 1; i <= 54; i++)
 {
  Player3[k++] = Pokers[i];
 }
}
void Cards::player1()
{
 cout << "玩家一:" << endl;
 for (int i = 1; i <= 18; i++)
 {
  cout << Player1[i].print() << '\t';
  if (i % 6 == 0)
   cout << endl;
 }
}
void Cards::player2()
{
 cout << "玩家二:" << endl;
 for (int i = 1; i <= 18; i++)
 {
  cout << Player2[i].print() << '\t';
  if (i % 6 == 0)
   cout << endl;
 }
}
void Cards::player3()
{
 cout << "玩家三:" << endl;
 for (int i = 1; i <= 18; i++)
 {
  cout << Player3[i].print() << '\t';
  if (i % 6 == 0)
   cout << endl;
 }
}
  • Main.cpp
#include "Cards.h"
int main()
{
 Cards c;
 cout << "创建:" << endl;
 c.create();
 cout << "洗牌:" << endl;
 c.shuffle();
 cout << "发牌:" << endl;
 c.players();
 c.player1();
 c.player2();
 c.player3();
 return 0;
}

运行结果

创建:
【红桃 A】      【红桃 2】      【红桃 3】      【红桃 4】      【红桃 5】      【红桃 6】
【红桃 7】      【红桃 8】      【红桃 9】      【红桃10】      【红桃 J】      【红桃 Q】
【红桃 K】      【方片 A】      【方片 2】      【方片 3】      【方片 4】      【方片 5】
【方片 6】      【方片 7】      【方片 8】      【方片 9】      【方片10】      【方片 J】
【方片 Q】      【方片 K】      【黑桃 A】      【黑桃 2】      【黑桃 3】      【黑桃 4】
【黑桃 5】      【黑桃 6】      【黑桃 7】      【黑桃 8】      【黑桃 9】      【黑桃10】
【黑桃 J】      【黑桃 Q】      【黑桃 K】      【梅花 A】      【梅花 2】      【梅花 3】
【梅花 4】      【梅花 5】      【梅花 6】      【梅花 7】      【梅花 8】      【梅花 9】
【梅花10】      【梅花 J】      【梅花 Q】      【梅花 K】      【小  王】      【大  王】
洗牌:
【红桃 A】      【大  王】      【方片 2】      【梅花 8】      【黑桃 5】      【梅花 K】
【黑桃 4】      【红桃 4】      【红桃 8】      【红桃 K】      【黑桃 9】      【方片 6】
【红桃 J】      【梅花10】      【方片10】      【黑桃 A】      【方片 8】      【方片 K】
【黑桃 8】      【黑桃 2】      【红桃 9】      【黑桃 J】      【梅花 3】      【梅花 J】
【梅花 A】      【黑桃 K】      【方片 J】      【黑桃 6】      【方片 4】      【黑桃 3】
【黑桃 7】      【红桃 5】      【梅花 5】      【梅花 9】      【梅花 7】      【红桃 6】
【梅花 Q】      【红桃 2】      【黑桃10】      【梅花 6】      【红桃10】      【方片 7】
【小  王】      【方片 3】      【梅花 4】      【红桃 Q】      【红桃 3】      【方片 5】
【方片 Q】      【方片 9】      【红桃 7】      【黑桃 Q】      【方片 A】      【梅花 2】
发牌:
玩家一:
【红桃 A】      【大  王】      【方片 2】      【梅花 8】      【黑桃 5】      【梅花 K】
【黑桃 4】      【红桃 4】      【红桃 8】      【红桃 K】      【黑桃 9】      【方片 6】
【红桃 J】      【梅花10】      【方片10】      【黑桃 A】      【方片 8】      【方片 K】
玩家二:
【红桃 A】      【大  王】      【方片 2】      【梅花 8】      【黑桃 5】      【梅花 K】
【黑桃 4】      【红桃 4】      【红桃 8】      【红桃 K】      【黑桃 9】      【方片 6】
【红桃 J】      【梅花10】      【方片10】      【黑桃 A】      【方片 8】      【方片 K】
玩家三:
【梅花 Q】      【红桃 2】      【黑桃10】      【梅花 6】      【红桃10】      【方片 7】
【小  王】      【方片 3】      【梅花 4】      【红桃 Q】      【红桃 3】      【方片 5】
【方片 Q】      【方片 9】      【红桃 7】      【黑桃 Q】      【方片 A】      【梅花 2】
  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值