一个简单的延时函数实现

在单片机中一般使用的delay()函数是通过采用for或者while循环,让计算机跑无用的代码,从而达到延时的目的,但这有一个坏处,控制不精确,而且PC比单片机的运算效率高很多,难以量化停止的时间。

经过查阅资料后,发现了一个简易的延时函数。

#include <ctime>

void   Delay(int   time)//time*1000为秒数 
{
    clock_t   now = clock();

    while (clock() - now < time);
}

这采用了<cmath>头文件中的clock()函数,并将延时开始的时间记录,与当前时间比较,当当前时间减去延时开始的时间等于停止时间时,跳出循环。

一个可以达成实时输入的小技巧

#include<windows.h>

while (1)
    {
        if (GetKeyState(65)<0)
            ball1.left(1);
        else if (GetKeyState(68)<0)
            ball1.right(1);
        else if (GetKeyState(87)<0)
            ball1.up(1);
        else if (GetKeyState(83)<0)
            ball1.down(1);
        system("Pause");
    }

运用GetKeyState()函数实现wasd移动。

该函数可以随时读取键盘上摁下的按键,如果是设定的按键,它会返回一个负数,并在松开时返回1或0,因此只要检验其是不是小于0,就可验证是否输入了想要的字符。

GetKeyState()与其他输入流的比较

它可以使用户不用在每次输入后输入\n,更加流畅。

**注意,该函数的参数为对应字符的ASCII码。