我正在努力将一个简单的学校作业变成一个实际的游戏。仅供引用,我所做的一切都是额外的功劳。
由于某些原因,卡片无法正确计算。示例: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());
}
关于Java,二十一点计算不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31714716/