Prolog 用户输入的时间限制(读取)

标签 time prolog limit interpreter

我正在为游戏编写解释器。用户将其移动输入解释器,程序执行该移动。

现在我想为每个决定实现一个时间限制。玩家不应该能够思考超过 30 秒来写一个移动并按下回车。

call_with_time_limit 似乎相关,但它不能正常工作:

call_with_time_limit(30,读(X)),问题,写(问题)。

在这种情况下,它等待输入,当输入输入时,定时器随后启动。但我希望计时器从头开始。

我该怎么做?

最佳答案

如果您对 I/O 相关的超时感兴趣,请考虑 wait_for_input/3 set_stream/2 .你找到的内置,call_with_time_limit/2不是一个简单可靠的接口(interface)。

编辑:我只看到你使用 read/1用于输入。请阅读以上文档如何避免 read/1 中的阻塞.我不清楚你为什么需要这个,但用户可能只是输入 Return,从而绕过初始超时。 read/1现在会读到 '\n'但随后会等待进一步的输入 - 没有超时,而用户慷慨地浏览维基百科以寻求答案......甚至可能会问这个问题......

关于Prolog 用户输入的时间限制(读取),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8437786/

相关文章:

prolog - 关于 Prolog 语法

twilio - 如何限制我可以使用 Twilio 发送的消息量

limit - Datomic Free 可以处理多少吞吐量?

python - `No numeric types to aggregate` 滚动总和和 timedelta 类型错误

r - 在 r 中减去时间

php - 在php中格式化mysql时间戳,有几个条件

c++ - 在 C++ 中实现 time_t 的错误代码

prolog - Prolog 中的逻辑

prolog - 如何使用SWI Prolog为加权有向图找到唯一的最短路径?

mysql select查询直到达到条件