如何用c ++更新程序中的时间?

时间:2014-11-23 18:36:51

标签: c++

我正在尝试制作一个迷宫游戏并且它有时间限制。与第一个迷宫一样,用户只有30秒,我使用了一个变量time_elapsed来计算结束时间和开始时间之间的差异。

我使用了starting_time=clock()ending_time=clock()time_elapsed = (double)(ending_time - starting_time)/CLOCKS_PER_SEC?,计算经过的时间,然后我在等式time_left_for_maze_one=30-time_elapsed中使用它。

但是当用户完成第一个迷宫然后进入第二个迷宫时,时间应该是50秒但是从20秒或23秒开始。这是因为第二个迷宫的时间是使用类似的等式计算的:time_left_for_maze_two=50-time_elapsed,但此处time_elapsed是上一个等式中的{{1}}。

有没有办法在用户完成每个迷宫时更新时间?

3 个答案:

答案 0 :(得分:1)

您的问题并非100%明确,但我假设您在迷宫开始时初始化一次starting_time并更新每帧的ending_time?如果是这种情况,你需要在新迷宫的开头重置starting_time,这反过来会重置time_elapsed。

答案 1 :(得分:0)

clock(3)函数计算处理器时间(通常以μ为单位)。

你想要真正的经过时间。使用time(2)。在Linux上,请阅读time(7)并考虑将clock_gettime(2)CLOCK_REALTIME(或CLOCK_MONOTONIC)一起使用。

通常,时间测量通常是特定于操作系统的(即使timeclock在C99中)。如果您有C++11实施(例如g++ -std=c++11 -Wall 最近 GCC 4.9),请阅读<chrono>

BTW,对于编程游戏,您可能会对libsdl感兴趣。

答案 2 :(得分:0)

是。只需为starting_time分配一个新值即可。由于您尚未将其声明为const,因此您可以为其指定新值。

可能更清洁的解决方案是拥有time_left变量,最初为50秒。在每个迷宫之后,您会扣除该迷宫的time_taken。如果对于给定的迷宫,time_taken > time_left,则输了。

正如Basil所说,clock()衡量的是CPU时间。您只想要time(),这被称为“墙(时钟)时间”。