问题描述
{{1}}
我不想做蛇游戏。这将基于时间。例如,屏幕将每5秒左右更新一次。为此,我使用了chrono库。我不习惯这种尝试或学习的方法,因此我可能会错过一些显而易见的东西。但是问题是主函数没有进入if块。因此,它对控制台没有任何影响。
我尝试调试(逐行运行)。实际上这并不像正在运行的程序那样,因为时间间隔会变长,但是每次都阻塞时会进入。另外,如果我将if条件设置为2纳秒,那么它也可以工作,但是由于cout函数无法快速打印,因此我需要使其长得多。在调试时,我还意识到“ StartingTime”和“ EndingTime”变量不会被初始化(除非我直接停止它们)。有趣的部分是Ifı在if块之后添加cout,一会儿程序开始进入If块。
解决方法
操作时:
chrono::duration_cast<chrono::milliseconds>(EndingTime - StartingTime).count();
没有足够的时间过去,毫秒数总是返回0。这意味着您总是向ElapsedTime
添加0,并且永远不会超过10。
一种解决方法是使用较小的分辨率:
chrono::duration_cast<chrono::nanoseconds>(EndingTime - StartingTime).count();
如您在问题中提到的,并适当调整if
条件。
但是,最好的解决方法是将ElapsedTime
从float
更改为chrono::duration
(具有适当的单位),因为这是变量代表的单位。这样一来,您就不必再对持续时间执行.count()
。