2024 Clojure 状态调查中分享您的想法!

欢迎!请查看关于页面来获取更多关于这一过程的信息。

+1
IO

作为一个学习练习,我正在制作一个基于终端的交互式程序(一个游戏)。我想程序能逐字符处理输入。每次用户按下按钮,程序处理它并给出输出。我无法使用标准库做到这一点。我知道 readread-line 函数,但它们读取的是整行(直到按回车键)。这并不是我想要的。我上网搜索并找到了这个使用 jline3 Java 库的解决方案:https://stackoverflow.com/questions/58571928/how-can-i-read-a-single-character-from-stdin-in-clojure。我试图跟随它,但是运行我的程序时收到了以下警告和错误。

警告:无法创建系统终端,创建哑终端(启用调试日志以获取更多信息)异常在 "main" 线程中编译于 (/private/var/folders/nt/26pz2dqj4y70z38vrtgd8t4m0000gn/T/form-init7411586405251765923.clj:1:125)。原因是:在 org.jline.terminal.impl.DumbTerminal 类中没有找到匹配的字段:read

我不知道如何启用调试日志。我在 OS X 和 iTerm2 上工作。我在这里提出了相同的问题:https://clojureverse.org/t/reading-standard-input-one-character-at-a-time/5354?u=jewiet

1 答案

+1

这并不是真正的回答,但您可能发现使用https://github.com/theophilusx/tuihttps://github.com/MultiMUD/clojure-lanterna有帮助,这些库可能涵盖了您大量底层的终端东西,会使您能够专注于您的游戏。

感谢您的回复。我使用了lanterna库来解决这个问题。我在clojureverse.org上简要地描述了答案。

https://clojureverse.org/t/reading-standard-input-one-character-at-a-time/5354/2?u=jewiet
...