如何在 c++ 程序中更新时间
How to renew time in a programme in 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
是前一个方程中的那个。
有没有办法在用户完成每个迷宫时更新时间?
从您的问题中不是 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()
,这被称为"挂(钟)时间"。
- C++为构建时间获取QDateTime的可靠方法
- 从C++本机插件更新Vector3数组
- 从持续时间构造std::chrono::system_clock::time_point
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- Chilkat SFTP 文件修改时间不与上传更新
- 如何在长时间计算中进行C 的一次进度更新
- 如何在一段时间内更新 QLabel?
- QT 上的 exe 文件在树莓派终端上的更新时间时挂起
- 自动更新QDateTimeEdit,以便它显示当前的系统日期和时间
- 给定一个微秒值,如何准确地得到一个时间值结构体?/*更新获取负值*/
- 在QT中以不同的时间间隔更新GUI
- 如何以预定的时间间隔更新 GUI,同时仍执行非 GUI 工作
- 如何在 c++ 程序中更新时间
- 时钟时间在 C++ 中未更新
- VTK:在每个模拟时间步长更新renderWindow中的数据点
- 在c++中使用GetTickCount()更新时间和位置