使用枚举类型时,评分系统无法正确添加

时间:2018-04-24 02:18:02

标签: c

该功能用于计算二十一点手的分数。踢球者是因为当得分低于11时aces我想要加上10,如果有一个ace,因为我已经将它= 1,所以如果得分大于11,它只会加一,并且由于某种原因我不是这样做的,我不知道为什么,它只是增加1.继承我的类型和我的功能。

typedef enum { HEARTS, DIAMONDS, SPADES, CLUBS } suit_t;
typedef enum { ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING } value_t;

typedef struct {
    suit_t suit;
    value_t value;
} card_t;
typedef struct {
    card_t playercards[21];
    int num_cards_in_array;
} hand_t;
// blackjack_value = returns an integer that represents the blackjack value of the hand
int blackjack_value(hand_t hand) {
    int score = 0;
    int i;
    card_t card;

    for (i=0; i < hand.num_cards_in_array; i++) {
        score = points(hand.playercards[i]) + score;

    if (score < 11 && card.value == ACE) {
        score = score + points(hand.playercards[i])+ 10;
    }
    }
    return score;
}

1 个答案:

答案 0 :(得分:0)

关于:

if (score < 11 && card.value == ACE)

预计这将如何知道正在查看哪张卡?我认为这是你问题的根源。

推荐:

if( score < 11 && hand.playercards[i] == ACE )

但是,不应该在总结手牌中的循环之后进行检查吗?