所以我是初学者制作基于文本的俄罗斯方块,我希望这件作品每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");
}
答案 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;
}