斗地主存储在vector中的牌怎么分发出去
时间: 2024-03-20 11:38:32 浏览: 37
将存储在vector中的牌分发给三个玩家可以采用以下的方法:
1. 首先将vector中的牌打乱顺序,可以使用C++中的random_shuffle()函数来打乱牌的顺序;
2. 然后使用循环将打乱顺序之后的牌发给三个玩家,每次发三张牌,直到牌发完为止。
以下是一个简单的C++代码示例:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<string> poker; // 牌库
vector<string> player1, player2, player3; // 玩家手牌
string line;
ifstream fin("poker.txt");
if (fin.is_open()) {
while (getline(fin, line)) {
poker.push_back(line);
}
fin.close();
}
else {
cout << "Unable to open file" << endl;
return 1;
}
// 将牌打乱顺序
random_shuffle(poker.begin(), poker.end());
// 分发牌
for (int i = 0; i < poker.size(); i++) {
if (i < 51) {
if (i % 3 == 0) {
player1.push_back(poker[i]);
}
else if (i % 3 == 1) {
player2.push_back(poker[i]);
}
else {
player3.push_back(poker[i]);
}
}
else {
player3.push_back(poker[i]);
}
}
// 输出玩家手牌
cout << "Player 1: ";
for (int i = 0; i < player1.size(); i++) {
cout << player1[i] << " ";
}
cout << endl;
cout << "Player 2: ";
for (int i = 0; i < player2.size(); i++) {
cout << player2[i] << " ";
}
cout << endl;
cout << "Player 3: ";
for (int i = 0; i < player3.size(); i++) {
cout << player3[i] << " ";
}
cout << endl;
return 0;
}
```
这样就可以将打乱顺序之后的牌分发给三个玩家,并输出每个玩家的手牌。