我正在使用图形模块在Ocaml中制作一个简单的太空入侵者。您可以使用“ a”和“ d”移动飞船,并进行太空射击。我的问题是我不能让你同时移动和射击。当我按“ d”键移动然后按空格键进行拍摄时,即使我从未停止按“ d”键,飞船也会射击,但会停止移动。
let rec handler state old_time =
...
...
let event = Graphics.wait_next_event [ Graphics.Poll ] in
if event.Graphics.keypressed then
match (read_key ()) with
|'a' -> handler { new_state with player = ((fst new_state.player) - 20, snd new_state.player) } new_time
|'d' -> handler { new_state with player = ((fst new_state.player) + 20, snd new_state.player) } new_time
|' ' -> handler (fire_bullet new_state) new_time
| _ -> handler new_state new_time
else
handler new_state new_time
;;
我知道从队列中读取read_key以及其他所有内容,但是问题在于,当我按下另一个键时,他不再看到我按住了一个键。
有人知道如何解决吗?
谢谢。