在C++中的代码中指定的某个等待时间后执行某个操作
Execute something after a certain waiting time specified in the code in C++?
我正在尝试用C++制作一个基本的snake游戏,我用orl[x]和ory[y]数组制作了一个基本网格,现在我正在尝试添加snake。
基本上,我想让蛇移动,直到按下某个键,然后一次移动一个阵列。我试着使用定时器以外的其他东西,但它会立即执行。我需要一个计时器,这样蛇就可以每秒钟都这样做,直到按下一个键。如果你曾经玩过蛇,你就会明白我的意思。
我需要用C++制作一个定时器,但我不想通过创建一个定时器来实现一个ENORMOUS代码,也不想从我自己的代码中理解任何东西。我希望它尽可能简单。
你知道我该怎么做吗?我查看了时间头库,但没有发现任何有用的东西。
可悲的事实是,标准C++并没有真正支持这种类型的行为。Windows和Posix都支持睡眠功能,这将允许您执行此操作。对于更高级别的解决方案,您可以查看Boost::Threads。
如果您在linux上,可以使用"time.h"
这里有一个等待几秒钟的快速功能
如果你愿意,你可以修改它几毫秒
此外,您正在使用ncurses库吗?
#include <iostream>
#include <cstdlib>
#include <time.h>
void SleepForNumberOfSeconds(const int & numberofSeconds);
int main(){
std::cout << "waiting a second.." << std::endl;
SleepForNumberOfSeconds(1);
std::cout << "BOOM!" << std::endl;
std::cout << "waiting 5 seconds.." << std::endl;
SleepForNumberOfSeconds(5);
std::cout << "AH YEAH!" << std::endl;
return EXIT_SUCCESS;
}
void SleepForNumberOfSeconds(const int & numberofSeconds){
timespec delay = {numberofSeconds,0}; //500,000 = 1/2 milliseconds
timespec delayrem;
nanosleep(&delay, &delayrem);
return;
}
我添加这个答案,因为目前不存在C++11答案。
您可以使用std::this_thread::sleep_for
进行平台独立等待
void millisecond_wait( unsigned ms )
{
std::chrono::milliseconds dura( ms );
std::this_thread::sleep_for( dura );
}
如果您使用的是windows,请检查SetWaitableTimer windows api调用。我不能提供一个例子,因为我现在在iPad上,但它可以满足你的需求。
祝你好运!
相关文章:
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 在SQLITE数据库中写入记录需要花费大量时间.如何提高刀片操作效率?
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 客户订单的最短平均等待时间
- 即使长时间等待,C++线程也不会加入
- 以毫秒级精度对日期和时间进行操作
- 如何在长时间运行的方法中等待信号?
- 如何计划在将来时间运行的操作
- 对于同一任务,线程的等待时间在 0 到 30000 微秒之间系统地切换
- 为什么 std::future::wait_for 不等待正确的持续时间
- C 提升:如何中断光纤或加入等待直到最大时间
- setSockopt在C 中不起作用(超时设置为1s,等待更长的时间)
- 通过按键而不是等待指定的时间来记录扬声器并结束录制过程
- 如何在等待时取消"提升::ASIO::读取"操作
- 如何找到循环的平均等待时间及其随着时间的流逝
- 如果一个basic_waitable_timer在仍有异步操作等待的情况下被销毁,该怎么办
- 在C++中的代码中指定的某个等待时间后执行某个操作
- 如何计算轮候程序的等待时间
- 汇编操作的时间
- c++线程等待时间