如何在 c++ 程序中更新时间

How to renew time in a programme in c++?

本文关键字:更新 时间 程序 c++      更新时间:2023-10-16

我正在尝试制作一个迷宫游戏,它有时间限制。就像第一个迷宫一样,用户只有 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是前一个方程中的那个。

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

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

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

您想要实际经过的时间。使用时间(2)。在 Linux 上,读取时间(7) 并考虑将 clock_gettime(2) 与 CLOCK_REALTIME 一起使用(或者可能是 CLOCK_MONOTONIC )。

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

顺便说一句,对于编程游戏,您可能对libsdl感兴趣。

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

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

正如Basil所指出的,clock()测量CPU时间。你只需要time(),这被称为"挂(钟)时间"。