gpt4 book ai didi

java - 等待用户输入继续

转载 作者:行者123 更新时间:2023-12-02 08:51:08 25 4
gpt4 key购买 nike

好吧,我在这里看到了很多这样的问题,但所提供的答案似乎都不适合我的具体情况。

我有一个游戏模拟程序,分为两部分编写;我首先编写了实际的功能,然后编写了 GUI 来显示所有功能。我想当我完成后,我只需实现来回调用即可让两个人互相交谈。后端同时使用 JOptionPane 来获取用户输入。

我的问题是,现在我想在 GUI 中显示内容,我不知道如何暂停程序的运行以等待这种情况发生。例如,我的原始版本中有这个:

private static void runAttackerTurn(Team off, Team def) {

int counter = 0;
while (counter < 4 && off.whoHasIt() != null) {
//Do some stuff
active = getActive(off, def, counter);
select = (String)JOptionPane.showInputDialog(null,
"Who Would " + active.getName() + " Like To Attack?" + "\n" +
off.whoHasIt().getName() + " has the ball",
"Turn " + turnCount + " - " + teamName + " Attacker Turn" ,
JOptionPane.INFORMATION_MESSAGE, null,
attackerOptions, attackerOptions[0]);
target = getTarget(off, def, select, counter);
attack((Forward)active, target);
//More stuff
counter++;
}

}

而且效果很好。但是当我想使用 GUI 而不是 JOptionPane 时,一切都会崩溃。 GUI 有一个 JPanel,其中包含一个用于文本的 JLabel、一个用于列表选项的 JComboBox 以及一个 JButton确认。我想做的是让程序有效地“暂停”,并等待用户点击按钮,然后选择所选项目,将其放入 select 中并继续。

正如我最初尝试的那样,我无法将该方法分成两部分,因为除了 select 的结果之外,我还需要将其他内容发送到第二部分。

此外,从上面的内容中可能并不明显,但在程序过程中我用不同的方法执行了大约二十或三十次,所以我确实需要一个通用的解决方案,而不是快速修复。

我认为使用多个线程执行此操作可能会起作用,但我似乎无法做到这一点(主线程过早停止执行 - 按钮甚至没有显示可供单击),无论如何,我会更喜欢简单的东西。

另外,如果这不是很清楚,我真正想做的是在嵌入 GUI 的 JPanel 中模拟 JOptionPane 的模态属性,并使该方法在继续之前等待用户输入。

有什么想法吗?

最佳答案

多线程方法可能仍然是最简单的方法。如果您实际上并不需要程序逻辑在对话框出现时继续运行,并且不介意需要零速度增加的额外线程,那么您可以在实际的游戏逻辑类中添加一个名为 waitforinput() 的函数,只是你在 GUI 线程上调用一些东西之后就可以插入了。让它看起来像这样:

waitForInput()
{
while(gotInput==false)
{

}
gotInput=false;
return;
}

然后让你的 GUI 类在完成应该恢复游戏的操作时翻转输入变量。它并不漂亮,但非常简单,应该可以很好地满足您的目的。

关于java - 等待用户输入继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782616/

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