在时间段后更改变量值
Changing variable value after time period
我对C++编程相当陌生,我正在创建一个与太空侵略者大致相似的游戏。
我想做的是有一个布尔值"player.shield",当它是假的,20秒后它会将值改回true。
我将如何去做?
任何帮助都值得赞赏:D
它可以通过 Win32 API 函数SetTimer
来完成,您可以在其中注册回调以更新值。
MSDN 文档
取决于平台、您使用的库等。通常,即使您可以使用一些或多或少的异步计时器,在游戏中,这通常在主循环中以不同的方式完成,主循环以受控方式处理所有游戏机制。
也就是说,与其拥有数十个可以随时以任何顺序触发的计时器,不如创建这样的函数:
void onGameTick()
{
DWORD currentTime = ::GetTickCount();
if (player.shield && currentTime - player.shieldAcquiredTime < 20) {
player.shield = false;
// You can also do other things here like trigger a sound effect etc.
}
// Do other logic, like move players, enemies, shots etc.
}
然后在每次屏幕更新之前或通过计时器或其他方式调用此函数。
通过使用这种技术,您可以非常明确地对游戏状态进行任何更改,始终以相同的顺序完成,以线性方式轻松调试,避免可能的多线程数据争用等。
下面是指向 c++ 计时器参考的链接。
1( 设置 "player.shield = true">
2( 启动计时器
#include <ctime>
inline void timeSec(clock_t sec)
{
clock_t start_time = clock();
clock_t end_time = sec * 1000 + start_time
while(clock() != end_time);
}
相关文章:
- 使用变量值作为 PlaySound 中的路径
- 通过指针偏移量访问结构变量值
- 变量值在 C++ 中的 glutIdleFunc() 中未递增
- 更新 #ifdef 中的现有变量值?
- 尝试更改 main 函数内的全局变量值时出现编译错误 C++.
- 通过 Rcpp 和 bit64 R 包将最大的int64_t变量值从 C++ 传递到 R
- 如何使用 IRBuilder 更新 LLVM IR 中的全局变量值?
- 更改已在运行的程序的变量值
- 在 Xcode 中使用后对外部变量值进行初始化
- C++整数变量值
- 变量值,在三元运算符之后
- 如何获得对不同类的引用,以便从所述类内部获得变量值
- Java应用程序的JNI-c++变量值
- 如何固定从传感器获得的变量值
- 离开方法时重置变量值
- 打印具有通用特定变量值的类对象
- 在宏函数C++中设置宏变量值
- 为什么每次迭代都会获得相同的变量值? C++
- 如何根据基类对象中的变量值分配派生类中的变量?
- c++变量值不改变