我一直在开发一个 Java 纸牌游戏应用程序,为了学习,我正在尝试正确实现 MVC 架构。目前,我已经为甲板、桌子和所有玩家实现了模型。我还为每个模型创建了查看器类,每个查看器在 JPanel 中显示其各自的模型。然后我有一个 GameViewer 类,它将所有查看器放入一个 JFrame 中。
我的顶级类调用 Main,它创建所有模型和查看器的实例。我现在正在尝试实现控制器,它将使用 ActionListener 类来查找来自用户的按钮点击并相应地修改查看器和模型。我对如何最好地做到这一点感到困惑。
我的游戏设计非常有序,游戏向用户显示一条消息,然后等待用户点击鼠标输入,然后继续,等等。因此,我想我会在一个Main 中的 while 循环,其中每次迭代代表游戏中的一轮,直到游戏结束。
问题是我只对用户在特定时间的一些输入感兴趣。例如,我可能会向用户显示一条消息并告诉他们单击“确定”按钮继续。在这一点上,我不在乎他们是否点击其中一张卡片,因为我只是在寻找点击 OK 按钮。在其他时候,我可能会要求用户选择一张卡片,在这种情况下,我正在等待他们点击一张卡片,而我对点击 OK 按钮不感兴趣。
我想在没有任何轮询的情况下实现这一点,但我不确定最好的方法。如果我到了等待用户输入的地步,我是否使用 wait() 方法让游戏线程进入睡眠状态,直到来自 ActionListener 的事件回调发送通知?
否则,在 Main 中使用顺序代码是不是错误的方法?我是否应该在 ActionListener 的事件回调中实现所有游戏逻辑?
提前致谢。