Is there an elegant way to deal with the Ace in Blackjack?

前端 未结 7 1255
心在旅途
心在旅途 2020-12-06 10:19

My kiddo had a homework assignment to write Blackjack in Java. I helped him a little but for the most part he did it all himself and it actually plays pretty well. He even c

7条回答
  •  情话喂你
    2020-12-06 10:55

    short aces_count = 0;
    short non_aces_sum = 0;
    short global_sum = 0;
    
    foreach card in _card:{
        if( card.value != 11 ){ // assuming ace value is 11
            if( card.value > 10 ) 
                non_aces_sum += 10;
            else
                non_aces_sum += card.value
        }else
            aces_count += 1;
    }
    
    short aces_sum = 0;
    if( aces_count > 0) aces_sum = 11;
    
    for(int i=0 ; i < aces_count - 1; i++){ // - 1 cuz already asigned first ace
        aces_sum += 1; // 2x aces == 22 so max 1 ace has value 11
    }
    if(aces_sum + non_aces_sum > 21)
        aces_sum = aces_count; // no need for an 11 value ace, so all are 1
    
    global_sum = non_aces_sum + aces_sum;
    

提交回复
热议问题