簡體   English   中英

Java,Blackjack無法正確計算

[英]Java, Blackjack not computing correctly

我正在努力將一個簡單的學校作業變成一個真正的游戲。 僅供參考,我正在做的事情還有額外的功勞。

由於某種原因,卡無法正確計算。 示例:一個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() );
    }
}
}
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());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM