栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++扑克牌发牌

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++扑克牌发牌

自动发扑克牌 52张牌无大小王随机发给4个玩家


#include 
#include 
#include 
#include 
#include 
using namespace std;

typedef enum Poker_color
{
	T_spade = 0,
	T_plum_blossom,
	T_red_heart,
	T_rhomb
}Poker_color;

typedef size_t Number;

#define POKER_SINGLE_NUMBER		13
#define PLAYER_TOTAL_NUMBER		4

static string Poker_color_name[] =
{
	//"??", "?? ", "?? ", "?",
	"黑桃", "梅花", "红心", "方砖"
};

static string Poker_number[] =
{
	"A", "2", "3", "4",
	"5", "6", "7", "8", "9",
	"10", "J", "Q", "K",
};

class Poker
{
public:
	void display()
	{
		cout << Poker_color_name[m_color]
			<< setw(2) << Poker_number[m_number - 1] << " ";
	}
	Poker_color 	m_color;
	Number			m_number;
};

typedef vector	Pokers;

static string Player_name[] =
{
	"一号玩家", "二号玩家", "三号玩家", "四号玩家"
};

class Player
{
public:
	Player() {};
	~Player() {};

	void set_number(Number _number) { m_player_number = _number; }
	void init() { m_pokers.clear(); }
	void push(Poker _poker) { m_pokers.push_back(_poker); }

	void display()
	{
		cout << Player_name[m_player_number - 1] << " ";
		for (int i = 0; i < POKER_SINGLE_NUMBER; i++)
			m_pokers[i].display();
		cout << endl;
	}

private:
	Player(const Player& _player) = delete;

private:
	Pokers			m_pokers;
	Number			m_player_number;
};

class GameTable
{
public:
	GameTable(int _count) :m_count(_count)
	{
		m_players[0].set_number(1);
		m_players[1].set_number(2);
		m_players[2].set_number(3);
		m_players[3].set_number(4);

		m_pokers.clear();
	}

	~GameTable()
	{
		m_pokers.clear();;
	}

	void init()
	{
		for (int i = 1; i <= POKER_SINGLE_NUMBER; i++)
		{
			Poker poker;
			poker.m_number = i;
			poker.m_color = T_spade;
			m_pokers.push_back(poker);
			poker.m_color = T_plum_blossom;
			m_pokers.push_back(poker);
			poker.m_color = T_red_heart;
			m_pokers.push_back(poker);
			poker.m_color = T_rhomb;
			m_pokers.push_back(poker);
		}
	}

	void play()
	{
		for (size_t j = 0; j < m_count; j++)
		{
			for (int i = 0; i < PLAYER_TOTAL_NUMBER; i++)
				m_players[i].init();

			cout << j + 1 << "轮" << endl;
			srand(time(0));
			random_shuffle(m_pokers.begin(), m_pokers.end());
			for (int i = 0; i < POKER_SINGLE_NUMBER; i++)
			{
				m_players[0].push(m_pokers[0 + i]);
				m_players[1].push(m_pokers[POKER_SINGLE_NUMBER + i]);
				m_players[2].push(m_pokers[POKER_SINGLE_NUMBER * 2 + i]);
				m_players[3].push(m_pokers[POKER_SINGLE_NUMBER * 3 + i]);
			}
			display();
			cout << endl;
		}
	}

private:
	GameTable(const GameTable& _game_table) = delete;

	void display()
	{
		for (size_t i = 0; i < PLAYER_TOTAL_NUMBER; i++)
			m_players[i].display();
	}

private:
	Player			m_players[PLAYER_TOTAL_NUMBER];
	Pokers			m_pokers;
	Number			m_count;
};

int
main(int argc, char* argv[])
{
	int count = 0;
	if (argc > 1)
		count = atoi(argv[1]);
	else
		cin >> count;
	assert(0 < count);

	GameTable* game_table = new GameTable(count);
	assert(NULL != game_table);

	game_table->init();
	game_table->play();

	delete game_table;
	game_table = NULL;
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971271.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号