1

我正在尝试使用java编写一个控制台游戏,当你按住一个键时,我希望它不断地移动你的角色。

这意味着我需要按键和按键释放事件,因为在您开始反复输入同一个字母之前按住一个键会有延迟。

我已经使用 stty 将终端置于原始模式,但我似乎没有收到密钥释放事件。

这个答案似乎表明我确实可以从 STDIN 获得这些事件:https ://stackoverflow.com/a/1598436/2404047

在原始模式下,我实际收到的是大多数键的单个字节,但在某些情况下,比如箭头键,我会得到多个字节。

有没有办法可以通过 STDIN 获取按键和释放事件,或者像这样的控制台游戏根本不可行?

4

1 回答 1

1

这是你的误解。您无法使用纯 java 从控制台获取事件。

可能的解决方案是:

  1. 使用本机实用程序获取事件,将它们重定向到文件/管道并将它们从该文件读入 java 代码
  2. 直接使用 JNI/JNA
  3. 使用已经包装 JNI 的库并为此目的公开 Java API。看看Charva,它为您提供您需要的 API 甚至更多。
于 2013-05-21T05:17:26.657 回答