我正在尝试制作一个迷宫游戏并且它有时间限制。与第一个迷宫一样,用户只有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}}。
有没有办法在用户完成每个迷宫时更新时间?
答案 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
)一起使用。
通常,时间测量通常是特定于操作系统的(即使time
和clock
在C99中)。如果您有C++11实施(例如g++ -std=c++11 -Wall
最近 GCC 4.9),请阅读<chrono>
答案 2 :(得分:0)
是。只需为starting_time
分配一个新值即可。由于您尚未将其声明为const
,因此您可以为其指定新值。
可能更清洁的解决方案是拥有time_left
变量,最初为50秒。在每个迷宫之后,您会扣除该迷宫的time_taken
。如果对于给定的迷宫,time_taken > time_left
,则输了。
正如Basil所说,clock()
衡量的是CPU时间。您只想要time()
,这被称为“墙(时钟)时间”。