gpt4 book ai didi

java - 如何将事件监听器与 "asking"结合起来进行事件?

转载 作者:行者123 更新时间:2023-11-30 03:49:49 25 4
gpt4 key购买 nike

我为终端编写了一个简单的小迷宫游戏,它反复要求用户做某事(例如“您想朝哪个方向走?[N/E/S/W]”)。我有一个在循环中运行的 navigate() 方法,它会触发这些问题,存储他们的答案并根据答案执行某些操作。

public enum Dir (N, E, S, W);

public void navigate() {
Dir nextDir = utils.askDirection("Which way do you want to go?");
// Do stuff with answer, like changing position of user in maze
}

现在,我已经为我的游戏编写了一个简单的 GUI。我特意将对终端的所有引用放在一个实现 Utils 接口(interface)的 ConsoleUtils 类中(它具有诸如 askQuestion() 之类的方法) -我的想法是,我可以创建一个 GuiUtils 类,并将我的游戏作为终端游戏作为 GUI 游戏。

问题是 navigate 方法询问用户一个问题,然后“等待”响应,而 Utils 类通过使用 扫描仪读取最新的输入行。但是,如果我对 GUI 中的新 N/E/S/W 按钮使用事件监听器,则无论 navigate 方法是否请求事件,它们都会触发事件。 --> Image of GUI

有什么方法可以将其结合起来,或者我是否需要为 GUI 编写一个新的 navigate 方法?

(说实话,我也不完全确定我的 GUI 类是否应该实例化 game 类,在这种情况下,navigate 的逻辑可能最终会出现在无论如何,一个 GUI 方法,或者游戏是否应该有一个 GUI。我还没有为事件监听器编写任何代码,因为我不确定哪个类应该调用哪个类。这可能是一个单独的问题。)

最佳答案

您的基于文本的游戏有一个循环,反复询问问题以收集用户输入。 Swing 通过不断执行已发布到 EventQueueRunnable 代码块来为您提供此循环。 。例如,当用户按button时标记为 E,代码将发布到调用您的 ActionEvent 实现的队列,以处理游戏对 move east 命令的解释。

作为引用,检查了一个非常简单的猜谜游戏的完整示例 here 。在伪代码中,相应的基于文本的游戏可能如下所示:

initialize
loop
prompt "Guess what color!"
get chosenColor
if chosenColor = actualColor
say "You win!"
reset game
else
say "Keep trying."
end loop

更详细的game那里引用的内容包括基于原始文本的来源。

关于java - 如何将事件监听器与 "asking"结合起来进行事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725420/

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