我为终端编写了一个简单的小迷宫游戏,反复要求用户做某事(例如“您想朝哪个方向前进?[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。我特意把到终端的所有引用的ConsoleUtils
类,它实现一个Utils
接口(这有类似方法askQuestion()
) -的想法是,我可以创建一个GuiUtils
类,并有我的游戏无论是作为终端游戏或者作为GUI的游戏。
问题在于该navigate
方法向用户询问问题,然后“等待”响应,Utils
该类通过使用Scanner
读取最新的输入行来给予响应。但是,如果我在GUI中将事件监听器用于新的N / E / S / W按钮,则无论该navigate
方法是否要求一个,它们都会触发事件。->图形用户界面
有什么方法可以结合使用此方法,还是需要navigate
为GUI编写新方法?
(说实话,我也不完全确定我的GUI类是否应该实例化一个game
类,在这种情况下,逻辑navigate
仍然可能以GUI方法结尾,或者游戏是否应该具有GUI。我尚未编写还是事件监听器的任何代码,因为我不确定哪个类应该调用哪个。这可能是一个独立的问题。)
您的基于文本的游戏具有一个循环,该循环反复询问问题以收集用户输入。Swing通过连续执行Runnable
已发布到的代码块为您提供此循环EventQueue
。例如,当用户按下标记为的按钮时E,代码就会发布到队列中,从而调用您的ActionEvent
实现来处理游戏对move east
命令的解释。
作为参考,这里研究了一个非常简单的猜谜游戏的完整示例。在伪代码中,相应的基于文本的游戏可能如下所示:
initialize
loop
prompt "Guess what color!"
get chosenColor
if chosenColor = actualColor
say "You win!"
reset game
else
say "Keep trying."
end loop
此处引用的更详尽的游戏包括原始的基于文本的来源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句