【发布时间】:2015-02-24 08:37:36
【问题描述】:
我正在用 JavaFX 制作 BlackJack 游戏。到目前为止,一切都很顺利。唯一缺少的是游戏应该停止并且玩家应该在牌的总价值超过 21 时出局,就像真正的游戏一样。我在我的代码中添加了一个 if 语句。好消息是,if 语句执行。坏消息是,它在总值超过 21 之后执行。所以当值是 23 时玩家仍然可以击中。然后 if 语句将不会执行。它在玩家再次击球时执行,例如 23 变为 25。
我希望我解释得很好,否则请给我反馈。
这是我的代码:
public class FXMLDocumentController implements Initializable {
private int playerValue, dealerValue, playerTotal, dealerTotal;
Random ran = new Random();
@FXML
private TextArea dealerArea;
@FXML
private TextArea playerArea;
@FXML
private Label labelPlayerTotal;
@FXML
private Label labelDealerTotal;
@FXML
private Label labelWinner;
@FXML
private Button hitButton;
@FXML
private Button stayButton;
@FXML
private Button replayButton;
public void drawCardForPlayer(ActionEvent event) {
stayButton.setDisable(false);
playerValue = ran.nextInt(14);
while (playerValue <=1) {
playerValue = ran.nextInt(14);
}
######################################
// I created this broken if statement
if (playerTotal >21) {
labelWinner.setText("You busted, dealer won!");
hitButton.setDisable(true);
stayButton.setDisable(true);
}
#########################
switch (playerValue) {
case 2:
playerArea.appendText("\t" + Deck.drawTwo());
playerTotal = 2 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 3:
playerArea.appendText("\t" + Deck.drawThree());
playerTotal = 3 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 4:
playerArea.appendText("\t" + Deck.drawFour());
playerTotal = 4 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 5:
playerArea.appendText("\t" + Deck.drawFive());
playerTotal = 5 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 6:
playerArea.appendText("\t" + Deck.drawSix());
playerTotal = 6 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 7:
playerArea.appendText("\t" + Deck.drawSeven());
playerTotal = 7 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 8:
playerArea.appendText("\t" + Deck.drawEight());
playerTotal = 8 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 9:
playerArea.appendText("\t" + Deck.drawNine());
playerTotal = 9 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 11:
playerArea.appendText("\t" + Deck.drawJack());
playerTotal = 10 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 12:
playerArea.appendText("\t" + Deck.drawQueen());
playerTotal = 10 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 13:
playerArea.appendText("\t" + Deck.drawKing());
playerTotal = 10 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
case 14:
playerArea.appendText("\t" + Deck.drawAce());
playerTotal = 11 + playerTotal;
labelPlayerTotal.setText("Playertotal:" + playerTotal);
break;
default:
break;
}
}
}
}
我调试了一下,发现playerTotal的值一开始是0,而playerTotal的值只是在switch-case中初始化的,这就是问题所在。我该如何解决这个问题?
【问题讨论】:
标签: java xml user-interface javafx logic