Java,Blackjack无法正确计算

时间:2015-07-30 03:26:47

标签: java

我正致力于将简单的学校作业转变为实际游戏。仅供参考,这是我所做的所有额外功劳。

由于某些原因,这些卡无法正确计算。示例:一个Jack和一个3计算到20,Ace和3计算为13.我知道我还没有添加一个部分来制作Ace 1或11,我想先计算出计算结果。

我只是添加有问题的课程,但如果您想要我的所有代码,请告诉我。

public class BlackJack extends CardGame{

int computePlayerValue, computeDealerValue;
int cardValue1, cardValue2;


public BlackJack() {
    super();
    playerHand = 2;
    dealerHand = 2;
}

public void display() {
    System.out.println("BlackJack");
}   

public void playGame() {

}

public int getCardValue(Card card) {
    final String rank = card.getRank();
    switch (rank) {
        case "Ace":
            return 1;   
        case "King":
            return 10;
        case "Queen":
            return 10;
        case "Jack":
            return 10;
        default:
            return Integer.parseInt(rank);
    }
}

public void dealCards() {
    //Player 1
    System.out.println("Player 1:");
    for(int x = 0; x < playerHand; x++) {
        shuffle();
        System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
    }
    cardValue1 = getCardValue(fullDeck[0]);
    cardValue2 = getCardValue(fullDeck[1]);

    computePlayerValue = cardValue1 + cardValue2;
    System.out.println("Player has: " + computePlayerValue);



    //Compute dealers hand
    System.out.println("\nPlayer 2:");
    for(int x = 0; x < dealerHand; x++) {
        shuffle();
        System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit() );
    }
}
}

1 个答案:

答案 0 :(得分:3)

for(int x = 0; x < playerHand; x++) {
    shuffle();
    System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
}
应该在循环之前调用

shuffle(),而不是在循环期间调用。在您对卡片进行循环播放时对卡片进行随机播放是在您打印卡片后更换卡片。这就是你的结果混淆的原因。

shuffle();
for(int x = 0; x < playerHand; x++) {
    System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
}