扑克牌洗牌发牌c++
时间: 2024-01-04 08:20:07 浏览: 34
以下是使用C++实现扑克牌洗牌和发牌的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
// 定义扑克牌的花色和点数
const std::vector<std::string> suits = {"♠", "♥", "♣", "♦"};
const std::vector<std::string> ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
// 洗牌函数
void shuffleDeck(std::vector<std::string>& deck) {
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(deck.begin(), deck.end(), g);
}
// 发牌函数
void dealCards(const std::vector<std::string>& deck, int numPlayers) {
int numCards = deck.size() / numPlayers;
int remainingCards = deck.size() % numPlayers;
int cardIndex = 0;
for (int player = 1; player <= numPlayers; player++) {
std::cout << "Player " << player << ":\n";
for (int i = 0; i < numCards; i++) {
std::cout << deck[cardIndex++] << " ";
}
if (remainingCards > 0) {
std::cout << deck[cardIndex++];
remainingCards--;
}
std::cout << "\n\n";
}
}
int main() {
std::vector<std::string> deck;
// 初始化扑克牌
for (const std::string& suit : suits) {
for (const std::string& rank : ranks) {
deck.push_back(rank + suit);
}
}
// 洗牌
shuffleDeck(deck);
// 发牌给3个玩家
dealCards(deck, 3);
return 0;
}
```