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

时间:2012-02-24 18:25:59

标签: c++ time timer

我正在尝试用C ++制作基本的蛇游戏,我使用orl [x]和ory [y]数组制作了一个基本网格,现在我正在尝试添加蛇。

基本上我希望蛇移动直到按下某个键并一次移动一个数组。我尝试使用别的东西而不是计时器,但它会立即执行。我需要一个计时器,以便蛇每秒都按这样做,直到按下一个键。如果你曾经玩过蛇,你就知道我的意思了。

我需要在C ++中创建一个计时器,但我不想通过创建一个计时器来实现一个ENORMOUS代码,而不是从我自己的代码中理解任何东西。我希望它尽可能简单。

知道我怎么能这样做吗?我查看了时间标题库,但没有发现它有用。

4 个答案:

答案 0 :(得分:1)

可悲的事实是,标准C ++并不真正支持这种行为。 Windows和Posix都支持睡眠功能,可以让你这样做。对于更高级别的解决方案,您可以查看Boost :: Threads。

答案 1 :(得分:1)

如果你在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;
}

答案 2 :(得分:1)

我添加了这个答案,因为目前还没有C ++ 11答案。

您可以使用std::this_thread::sleep_for

进行与平台无关的等待
void millisecond_wait( unsigned ms )
{
    std::chrono::milliseconds dura( ms );
    std::this_thread::sleep_for( dura );
}

答案 3 :(得分:0)

如果您使用的是Windows,请查看SetWaitableTimer windows api电话。 我不能提供一个例子,因为我现在在iPad上,但它可以满足您的需求。

祝你好运!