unix - 如何让程序在 OCaml 中等待?
问题描述
我正在尝试在 ocaml 中制作俄罗斯方块游戏,我需要让一块以一定的速度在图形屏幕上移动。我认为最好的方法是创建一个递归函数,在屏幕顶部绘制该块,等待半秒左右,从屏幕上清除该块并将其重新绘制低 50 像素。我只是不知道如何让程序等待。我认为你可以使用 Unix 模块来做到这一点,但我知道如何......
解决方案
假设您想采用一种相当简单的方法,即一种无需多线程即可工作的方法。
大概当你的游戏运行时,它几乎所有的时间都在等待用户的输入,即等待用户按下一个键。事实上,最有可能的是,您正在使用阻塞读取来执行此操作。由于用户可以在输入任何内容之前花费任何时间(最多几分钟或几年),这与保持游戏的图形部分保持最新是不相容的。
一个非常简单的解决方案是在读取操作上设置超时。您最多可以等待(比如说)10 毫秒,而不是无限期地等待用户按键。
为此,您可以使用该Unix.select
功能。最简单的方法是切换到使用 Unix 文件描述符而不是 OCaml 通道作为输入。如果您不知道如何完成这项工作,您可能会带着更具体的问题回到 StackOverflow。
推荐阅读
- node.js - ReactJS npm test : SyntaxError: Unexpected identifier "Import"
- javascript - 无论如何要从 Firebase 身份验证 wintout 登录中检索 uid
- html - CSS - 标签和复选框与其他标签和复选框不对齐
- android - Android Studio 图标修复
- github - 在分叉和改进 Github 存储库后,我应该更改 package.json 中的作者吗?
- javascript - 如何正确修复 Blob 中 csv 文件的字符集?
- .net - 如何在 MVC 中处理 CheckBox 控件
- python - Scrapy:使用 sqlite 逻辑的计划抓取
- c# - 为什么我的 C# 函数返回字母在字母表中的位置?
- python - 如何在 tkinter 中更改按钮的选项?