我正在写一个使用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