gpt4 book ai didi

Java:基于文本的 rpg 游戏中的 setText GUI 代码

转载 作者:搜寻专家 更新时间:2023-11-01 01:37:12 26 4
gpt4 key购买 nike

我目前正在使用简单的 GUI 制作这款基于文本的角色扮演游戏。我很高兴找到了一个好的开始,但后来我偶然发现了一些东西,这让我暂时停止了编码。

如果您是在控制台中进行此操作,则可以轻松地使用此代码暂停角色的移动一段时间,例如:

System.out.println("[enemy]");
Thread.sleep(1000);
System.out.println("The local guard waves his sword and tries to stab you in the back, but you quickly parried and tried for a counterattack but you failed.");

如果您在 JTextArea 上执行此操作,您将使用 setText 但是如果你使用 Thread.sleep 它不起作用并且再次编码 setText ,会删除旧文本并用新文本替换它,所以战斗记录不会充分体现在游戏中。有办法解决这个问题吗?

最佳答案

您可以使用append 来追加而不是替换。这是简单的部分。

困难的部分:你必须改变你的程序流程。在 Swing 中,存在用于调度 GUI 事件的单个线程,即事件调度线程。您不应将 EDT 设置为 sleep 或在其中执行任何其他长时间运行的操作。这将卡住 GUI,它无法响应任何内容,也不会重新绘制。

相反,您应该使用 SwingUtilities.invokeLater 为必须在 EDT(操作 GUI 的所有内容)上执行的逻辑流和分派(dispatch)操作启动一个新线程,或者,在这种情况下也许更好,SwingUtilities.invokeAndWait

或者您应该采用事件驱动的控制流,例如您可以使用 Timer 稍后输出第二个文本。

适用于单线程控制台程序的程序流并不是多线程 GUI 应用程序的正确方法(每个 GUI 应用程序都自动是多线程的)。

关于Java:基于文本的 rpg 游戏中的 setText GUI 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com