我用 gui 制作了一个 Black Jack 版本。我的问题是,大部分实现都在创建窗口的同一个类中。类 GameWindow 都初始化 JFrame,添加卡片图标等视觉对象,并将文本存储到 JLabels 中,然后将它们添加到不同的 JPanel 中。
很好,但是 GameWindow(它实现了 ActionListener)还将 ActionListener 添加到按钮(它们是简单的 JButtons 未创建的类),并实现了 ActionPerformed。
我想为每个按钮创建一个类,例如“Class Deal实现ActionListener”,然后让该类处理ActionPerformed(ActionEvent e)。问题是如何从其他类向 GameWindow 添加对象?以及如何将 Deck、Player(Score 和 Cards,存储在 ArrayList 中)和 Bank(Score 和 Cards)对象发送到相应类(Deal、Stay 和 Hit)中的 ActionPerformed?
我不想发布代码,因为我尝试了不同的解决方案,所以现在有点乱,但如果你想让我发布代码的任何部分或全部,请告诉我。
编辑,认为这是很少的文字;)
我现在使用的类是 CardDeck,有一个 ArrayList 和 drawCard()、shuffle() 等方法。 Card,有一个 ImageIcon 和一个保存其值的 int。GameWindow 扩展了 JFrame 实现了 ActionListener,初始化了 JFrame,还处理了与 JButtons Deal、Hit 和 Stay 相关的 ActionPerformed(这是我要更改的)。Player,持有在 ArrayList 中绘制的玩家卡片,以及作为 int Bank 的分数,与 player 相同,但用于 ai。Main,执行 GameWindow。