Ocaml,模块图形 - 排队按键

mec*_*chu 3 ocaml

我正在Ocaml中编写一个简单的游戏,使用它的模块Graphics来执行绘图和交互.我遇到了将Graphics.read_key()所有印刷机排队等待以后使用的问题,因此当我按住键一段时间后,许多"按下"被放入内存中.发布后,仍然会执行操作.

有没有办法从这个队列中删除条目,或者只是(甚至更好)不排队它们?

Ben*_*kin 5

这可能不是最美丽的解决方案,但你可以使用key_pressed.如果按键可用,此函数将返回true.所以,一旦你读了一个按键,read_key你可以通过调用刷新你的队列,read_key直到key_pressed是假并忽略结果.

(* flush_kp : unit -> unit *)
let flush_kp () = while key_pressed () do
                      let c = read_key ()
                      in ()
                  done ;;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.