2013-06-01 40 views
0

我正在为一个大学项目构建一个使用Java的游戏。游戏首先必须使用文本界面,而后来我们不得不添加一个GUI。Java:控制器线程通信的GUI

我有一个线程运行游戏逻辑和更新游戏模型,以及一个单独的线程,带有主函数的线程,将JFrame实例化,然后根据游戏状态切换面板(控制器告诉gui使用setPage方法显示哪个框架)。

但是,获取用户输入是现在让我疯狂的原因。 使用文本界面,我只需要调用一个方法,比如getPlayerNum,然后在用户输入数字并按下回车键后,我会将输入返回给控制器。 所有的游戏逻辑都是在游戏循环中实现的,当需要输入时要求输入并将输出通知给视图。

我现在如何模拟类似的行为,我不得不使用基于事件的gui? 如何在用户单击按钮之前阻止方法调用,然后让该方法返回正确的值?

+1

您需要完全重新考虑您的程序结构,以便它不是线性的,而是状态和事件驱动的。不要“阻塞”方法,而是根据模型的状态改变程序对事件的响应。 –

+1

有关更详细的答案,请考虑询问更具体的问题,并附带一小部分可编译和可运行的示例代码。 –

+1

感谢您的回答。老师建议构建文本界面为“它会引导您正确构建游戏循环”,他“忘记”提及的是我们的目的是将请求和用户的答案分开。 我花了一段时间把所有东西都分开了,但现在它已经升级并且正在运行。 – Alakanu

回答

1

开发独立游戏模型的荣誉。作为设计GUI的前奏,从这个非常简单的game开始。添加一个监听模型并报告游戏进度的TextView。这将帮助您了解GUI的工作原理,并可帮助您确定模型中可能需要的附加功能。

+0

感谢您发布的示例,这是一个很好的例子,我希望我之前看到的方式比今天更好。 – Alakanu