是否可以避免在CMD中按Enter键?[关闭]

Is it possible to avoid pressing Enter in the CMD? [closed]

提问人:Bryantcore 提问时间:11/17/2023 最后编辑:Bryantcore 更新时间:11/17/2023 访问量:79

问:


我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便用事实和引文来回答。

2天前关闭。

我没有足够的编程知识来详细讨论,但我会尽我所能描述这个问题。

我有一个小游戏,使用 CMD 作为图形环境。角色使用 WASD 在矩阵中移动。运动奏效了。玩家必须输入一个特定的键(WASD),然后按ENTER键,让角色在矩阵中的每个方块之间移动1个单位。

问题是,我想避免每次需要执行移动时都必须按 ENTER。据我了解,CMD在这方面有一定的局限性。我应该求助于一些第三方库来实现这一点吗?

我感谢任何帮助。

java Windows 命令行管理模块

评论

0赞 GreenChicken 11/17/2023
不确定这是否可能,但也许我错了。据我所知,除非您提交(按 ENTER),否则程序无法读取 cmd 中的输入。als0 这是 JLine javadoc.io/doc/org.jline/jline/latest/index.html 的文档
0赞 VGR 11/17/2023
看起来 JLine 是用于基于行的输入,对您没有任何帮助。可能有第三方库用于读取“原始”控制台输入,但此时,您最好学习 GUI 开发
0赞 Abra 11/17/2023
你用纯 Java 编写了一个基于主机的游戏?或者您的游戏是否使用 JNI(或 JNA)或某些第三方库?
0赞 Bryantcore 11/18/2023
@VGR我正在做一个项目,并且特别要求使用 CMD 作为图形环境,所以我不能求助于 GUI。
0赞 Bryantcore 11/18/2023
@Abra老实说,我不确定。我输入了 NetBeans,据我所知,我安装了一个名为“JSE”的东西,我想还有一个叫做“JDK”的东西。我在项目中有三个库:java.util.Scanner、java.io.IOException 和 java.util.Random。

答:

1赞 David Weber 11/17/2023 #1

前言

CMD 不是为此而构建的。您需要一个解决方法。

溶液

  1. 创建一个 KeyListener,用于侦听 KeysReleased 事件。

  2. 例如,在释放“W”键后,您可以执行按键并由应用程序本身释放的 ENTER 键。

  3. 为此,您不能使用 AWT/Swing 类。您需要编写自己的 KeyListener。KeyListener

  4. 使用该类按应用程序按键。Robot

因此,如果您打开 CMD 并键入 AWSD,您的操作系统会将 Keys 类型写入 CMD,并且 KeyListener 将为您按 ENTER。

注意

您可以尝试将其作为 KeyListener:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = "";

   while (line.equalsIgnoreCase("quit") == false) {
       line = in.readLine();

       //do something
   }

   in.close();

也许你需要一秒钟.Thread

评论

0赞 GreenChicken 11/17/2023
这适用于命令行应用程序吗?
0赞 David Weber 11/17/2023
是的。CMD = CoMmanD(提示):)Robot 类不关心将 Window 作为 UI。
0赞 Abra 11/17/2023
当您使用 Robot 类时,它会启动事件调度线程 (EDT),该线程永远不会终止 - 除非您调用System.exit()