如何解决我无法让我的函数计算经过了多少时间并相应地打印内容
{{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()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。