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