用C++写一份斗地主程序
时间: 2023-11-16 19:04:55 浏览: 104
当然可以!下面是一个简单的斗地主程序的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <random>
// 定义扑克牌的花色和点数
const std::vector<std::string> suits = {"♠", "♥", "♣", "♦"};
const std::vector<std::string> ranks = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
// 定义扑克牌结构体
struct Card {
std::string suit;
std::string rank;
Card(std::string s, std::string r) : suit(s), rank(r) {}
};
// 洗牌函数
void shuffleCards(std::vector<Card>& cards) {
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(cards.begin(), cards.end(), g);
}
// 发牌函数
std::vector<std::vector<Card>> dealCards(std::vector<Card>& cards) {
std::vector<std::vector<Card>> players(3);
for (int i = 0; i < 17; ++i) {
players[i % 3].push_back(cards.back());
cards.pop_back();
}
return players;
}
// 显示玩家手牌
void showCards(const std::vector<Card>& cards) {
for (const auto& card : cards) {
std::cout << card.suit << card.rank << " ";
}
std::cout << std::endl;
}
int main() {
std::vector<Card> cards;
// 初始化扑克牌
for (const auto& suit : suits) {
for (const auto& rank : ranks) {
cards.emplace_back(suit, rank);
}
}
// 洗牌
shuffleCards(cards);
// 发牌
std::vector<std::vector<Card>> players = dealCards(cards);
// 显示玩家手牌
for (int i = 0; i < 3; ++i) {
std::cout << "玩家 " << i+1 << " 的手牌:";
showCards(players[i]);
}
return 0;
}
```
这个程序实现了简单的斗地主发牌功能,包含了洗牌、发牌和显示玩家手牌的功能。你可以根据需要进一步扩展和优化这个程序。希望对你有帮助!
阅读全文