我正在尝试用C ++制作基本的蛇游戏,我使用orl [x]和ory [y]数组制作了一个基本网格,现在我正在尝试添加蛇。
基本上我希望蛇移动直到按下某个键并一次移动一个数组。我尝试使用别的东西而不是计时器,但它会立即执行。我需要一个计时器,以便蛇每秒都按这样做,直到按下一个键。如果你曾经玩过蛇,你就知道我的意思了。
我需要在C ++中创建一个计时器,但我不想通过创建一个计时器来实现一个ENORMOUS代码,而不是从我自己的代码中理解任何东西。我希望它尽可能简单。
知道我怎么能这样做吗?我查看了时间标题库,但没有发现它有用。
答案 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上,但它可以满足您的需求。
祝你好运!