我有一个密码。 这是纸牌游戏的代码。 问题是应该将卡分发给游戏玩家,但不能重复。
如果可能,我需要您的帮助。谢谢。
#include<iostream>
#include<array>
#include<string>
#include<ctime>
using namespace std;
class Card {
public:
static const size_t card1{ 4 };
static const size_t card2{ 13 };
Card(const array<string, card1>& card1n,
const array<string, card2>& card2n)
: arr1{ card1n }, arr2{ card2n } {}
void disPlay() {
for (int x = 0; x < arr2.size(); x++) {
int i = rand() % 4;
int j = rand() % 13;
cout << arr1[i] + arr2[j] << " ";
}
}
private:
array<string, card1> arr1;
array<string, card2> arr2;
};
int main() {
array<string, Card::card1> arr1{ "♥","◆","♠","♣" };
array<string, Card::card2> arr2{ "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king" };
Card p1(arr1, arr2);
Card p2(arr1, arr2);
srand(static_cast<unsigned int>(time(0)));
cout << "player1's deck : ";
p1.disPlay();
cout << "\nplayer2's deck : ";
p2.disPlay();
}
我预测玩家的卡片重叠
答案 0 :(得分:0)
您首先创建一个包含全部52张牌的卡组(全部4套西服,以及全部13个等级)。该套牌可以由52个物品组成,每个物品代表一张卡。然后,您用std::shuffle
洗牌。然后,您将第一张X卡从牌组移至玩家的1手。这只手可能是另一组X个物品。然后,您将下一张X卡移到玩家的2手牌上。
答案 1 :(得分:-1)
据我了解,您希望两个玩家拥有一些相同的牌。我运行了您的代码,它确实输出了此代码:
player1's deck : ♥Q ♠8 ♠10 ♥2 ◆K ♣3 ♥J ♣6 ◆5 ♥K ♥9 ♠10 ◆K
player2's deck : ♠8 ◆7 ♥5 ◆2 ♠2 ♠2 ♥10 ◆3 ♥9 ♣Q ♣A ♥Q ◆5
请注意,两组都设有♥Q和◆5,但玩家的2个套牌中有2个♠2,而玩家的1个套牌中有2个◆K。
您可以像{Bathsheba所指出的那样shuffle数组,并从相同参考点为两个玩家提取。
(编辑:std :: move甚至不需要)