79753713

Date: 2025-09-02 16:02:21
Score: 0.5
Natty:
Report link

I believe I now have a solution which works. Thanks to those who commented!

Aces are now adjusted for in draw_card and soft 17s are handled in the dealer drawing.

void draw_card(vector<Card> &deck, vector<Card> &new_deck)
{

    int card_index = (rand() % deck.size());

    int soft_value;
    int hard_value;

    new_deck.push_back(deck[card_index]);

    deck.erase(deck.begin() + card_index);
    for (size_t i = 0; i < new_deck.size(); i++)
    {
        while ((total_value(new_deck) > 21 && new_deck[i].face == 4 && new_deck[i].value == 11))
        {
            new_deck[i].value = 1;
        }

        
    }
}

bool has_high_ace(vector<Card> &deck)
{
    bool ace = false;

    for(size_t i = 0; i < deck.size(); i++)
    {
        if (deck[i].face == 4 && deck[i].value == 11) return true;
        
        else return false;
    }
}


int dealer_drawing(vector<Card> &main_deck, vector<Card> &deck)
{

    int total = total_value(deck);

    while(total <= 16 || (total <= 17 && has_ace && has_high_ace))
    {
        draw_card(main_deck, deck);
        total = total_value(deck);
    }

    return total;
}
Reasons:
  • Blacklisted phrase (0.5): Thanks
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: user31400362