我该如何在OCAML中等待程序



我正在尝试在OCAML中制作一个俄罗斯方块游戏,我需要以一定速度在图形屏幕中移动。我认为,最好的方法是制作递归功能,将作品绘制在屏幕顶部,等待半秒左右,从屏幕上清除该件,然后重新绘制50像素。我只是不知道如何使程序等待。我认为您可以使用Unix模块进行操作,但是IDK如何..

让我们假设您要采用一种相当简单的方法,即一种无需多线程的方法。

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

然后,一个非常简单的解决方案是在读取操作上超时。您最多只能等待用户按键,而是最多等待10毫秒。

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

最新更新