c ++在睡着的时候运行代码

时间:2017-01-13 15:41:58

标签: c++ c++11 winapi

所以我是初学者制作基于文本的俄罗斯方块,我希望这件作品每150毫秒左右就会下降,但是当你正在运行时,你可以左右移动它们。

睡眠显然不起作用,所以任何替代方案?

while (true) {
    draw();

if (GetAsyncKeyState(VK_RIGHT]) {
    leftright(1);
}
if (GetAsyncKeyState(VK_LEFT)) {
    leftright(-1);

}

    check();
    move(1);

    check();

    checkline();
    movedown();

    Sleep(x);
    system("CLS");
}

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用计时器。我理解你的代码中的movedown()函数可以拉下碎片。这样做只有在上次通话后已经过了足够的时间才能这样做。类似的东西:

#include <iostream>
#include <cstdio>
#include <ctime>
static std::clock_t start = std::clock(); // take the start ticks at the beginning

int movedown() {

    std::clock_t currentTime = std::clock();
    double duration = (start - currentTime) * 1000/(double) CLOCKS_PER_SEC; // multiplied by thousand to get time in ms

    if ((long int) duration > 150)
    {
    **/* Your algorithm here */**
    start = std::clock(); //update start
    }
    return 0;    
}