我正试图在ocaml制作俄罗斯方块游戏,我需要以一定的速度在图形屏幕上移动。我认为最好的方法是制作一个递归函数来绘制……
让我们假设您想采用一种相当简单的方法,即一种无需多线程的方法。
据推测,当您的游戏正在运行时,它几乎花费所有时间等待来自用户的输入,即等待用户按下键。事实上,你最有可能使用阻塞读取来做到这一点。由于用户在键入任何内容之前可以花费任何时间(最多几分钟或几年),这与保持游戏的图形部分保持最新是不相容的。
一个非常简单的解决方案是在读操作上超时。您可以等待最多(比如说)10毫秒,而不是无限期地等待用户按下某个键。
为此,您可以使用 Unix.select 功能。最简单的方法是切换到输入使用Unix文件描述符而不是OCaml通道。如果您无法弄清楚如何使其工作,您可能会回到StackOverflow并提出更具体的问题。
Unix.select