题目
完成一副扑克牌的创建、洗牌和发牌。
源代码
- 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】