首页 > 解决方案 > 如何让程序在 OCaml 中等待?

问题描述

我正在尝试在 ocaml 中制作俄罗斯方块游戏,我需要让一块以一定的速度在图形屏幕上移动。我认为最好的方法是创建一个递归函数,在屏幕顶部绘制该块,等待半秒左右,从屏幕上清除该块并将其重新绘制低 50 像素。我只是不知道如何让程序等待。我认为你可以使用 Unix 模块来做到这一点,但我知道如何......

标签: unixocamlsleep

解决方案


假设您想采用一种相当简单的方法,即一种无需多线程即可工作的方法。

大概当你的游戏运行时,它几乎所有的时间都在等待用户的输入,即等待用户按下一个键。事实上,最有可能的是,您正在使用阻塞读取来执行此操作。由于用户可以在输入任何内容之前花费任何时间(最多几分钟或几年),这与保持游戏的图形部分保持最新是不相容的。

一个非常简单的解决方案是在读取操作上设置超时。您最多可以等待(比如说)10 毫秒,而不是无限期地等待用户按键。

为此,您可以使用该Unix.select功能。最简单的方法是切换到使用 Unix 文件描述符而不是 OCaml 通道作为输入。如果您不知道如何完成这项工作,您可能会带着更具体的问题回到 StackOverflow。


推荐阅读