我正在寫一個使用JFrame的二十一點程序,並儘量保持它儘可能簡單。我的JButton,jbHit只需點擊一下,但是每次點擊都會覆蓋PlayersHand和playerSide槽。我希望它能夠進行多次點擊(3次點擊 - 因爲這是在處理前兩次後可以獲得的最大卡數)選項它應該對它們進行計數,以便數組索引可以記錄卡片圖像。這是我迄今爲止的ActionListener代碼。恐怕我被卡住了。我應該使用int i ++的某種循環嗎?給JButton鼠標點擊的多個選項(二十一點遊戲)
//Hit Button ActionListener
jbHit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (playerValue < 21) {
//Draw a card
Card c = deck.drawCard();
playersHand.add(c);
playerSide[2].setIcon(new ImageIcon(c.getFilename()));
}
//If playerValue > 21, bust
else if (playerValue > 21) {
//Toggle Buttons
jbDeal.setEnabled(true);
jbHit.setEnabled(false);
jbStand.setEnabled(false);
jbDoubleDown.setEnabled(false);
message = "You bust.";
}
}
});
你可能真正需要的是某種模型(或兩個模型),它可以保存關於當前狀態,卡片數量和金額的所有信息,這一輪。你的按鈕將與這些模型進行交互,並根據那裏的反饋,通過監聽器,改變那裏的狀態...... – MadProgrammer 2014-11-06 02:39:41
@MadProgrammer你想得到那個幻想,你需要的是實現一個狀態機,其中每個環境知道下一個操作。你可以使用狀態模式來實現它。我最近設計了一個使用狀態模式的嚮導來實現這一點。然而,OP希望儘可能簡單。 – hfontanez 2014-11-06 03:00:39
@hfontanez只是另一種類型的模型;) – MadProgrammer 2014-11-06 03:02:39