如何在没有 C++ 重复项的情况下从牌组数组处理到玩家手牌数组?
How do I deal from a deck array to a player hand array without having duplicates in c++?
也许我错过了这个在另一个问题中得到的回答,但在搜索之后我似乎找不到我需要的答案。
这是我用来发牌的代码,它正确地将前两张牌的值更改为牌组数组中的随机整数。然而,正如所写的那样,代码有时会将重复的值传递给玩家手。
void Deal()
{
for (int i = 0; i < 2; ++i)
{
playerHand[i] = deck[i];
dealerHand[i] = deck[i + 2];
if (playerHand[i] == 11)
{
cout << "BLACKJACK!! YOU WIN!!" << endl;
WinHand();
}
else if (dealerHand[i] == 11)
{
cout << "Dealer Got Blackjack. Hand goes to dealer." << endl;
}
else
{
playerNextCard++;
dealerNextCard++;
deckNextCard = 4;
}
}
for (size_t i = 0; i < 2; i++)
{
cout << playerHand[i] << endl;
}
cout << "? \n" << dealerHand[1] << endl;
cout << "Money: " << money << endl;
return;
}
闲家和庄家总是拿到前四张牌,除非抽到 11 提前结束。无论牌组是否洗牌,都有可能收到重复的整数。如果你想让每个抽奖整数唯一,那么你可以搜索牌组,直到前一个不匹配。您还必须考虑如果找不到唯一整数会发生什么。
也许我错过了这个在另一个问题中得到的回答,但在搜索之后我似乎找不到我需要的答案。
这是我用来发牌的代码,它正确地将前两张牌的值更改为牌组数组中的随机整数。然而,正如所写的那样,代码有时会将重复的值传递给玩家手。
void Deal()
{
for (int i = 0; i < 2; ++i)
{
playerHand[i] = deck[i];
dealerHand[i] = deck[i + 2];
if (playerHand[i] == 11)
{
cout << "BLACKJACK!! YOU WIN!!" << endl;
WinHand();
}
else if (dealerHand[i] == 11)
{
cout << "Dealer Got Blackjack. Hand goes to dealer." << endl;
}
else
{
playerNextCard++;
dealerNextCard++;
deckNextCard = 4;
}
}
for (size_t i = 0; i < 2; i++)
{
cout << playerHand[i] << endl;
}
cout << "? \n" << dealerHand[1] << endl;
cout << "Money: " << money << endl;
return;
}
闲家和庄家总是拿到前四张牌,除非抽到 11 提前结束。无论牌组是否洗牌,都有可能收到重复的整数。如果你想让每个抽奖整数唯一,那么你可以搜索牌组,直到前一个不匹配。您还必须考虑如果找不到唯一整数会发生什么。