在C++中的代码中指定的某个等待时间后执行某个操作

Execute something after a certain waiting time specified in the code in C++?

本文关键字:操作 等待时间 执行 C++ 代码      更新时间:2023-10-16

我正在尝试用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上,但它可以满足你的需求。

祝你好运!