如何在没有c ++重复的情况下从牌组阵列处理到玩家手牌阵列?

时间:2017-05-17 02:52:09

标签: arrays duplicates c++14 blackjack

也许我错过了这个在另一个问题中得到回答但是在搜索之后我似乎无法找到我需要的答案。

这里是我用来处理卡片的代码,它正确地将前两个卡片值从deck组件中随机改为。但是在编写时,代码偶尔会将重复值传递给玩家手中。

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;
}

1 个答案:

答案 0 :(得分:0)

玩家和经销商总是收到前四张牌,除非在早期终止时抽出11张牌。无论是否洗牌,都有可能收到重复的整数。如果您想使每个绘制整数唯一,那么您可以搜索套牌,直到前一个不匹配。如果没有找到唯一的整数,您还必须考虑会发生什么。