在循环中使用多个_kbhit()

时间:2013-03-30 17:29:52

标签: c++ kbhit

我有一个有两种方法的Spaceship对象。第一种方法是move()

char touche;

if(_kbhit() != 0)
{
    touche = _getch();
    if(touche == 'k' || touche == 'l')
    {
        modifyPosition(touche);
    }
}

第二种方法是射击()

char touche;

if(_kbhit() != 0)
{
    touche = _getch();
    if(touche == char(32))
    {
        if(nbLasers < 30)
        {
            addLaser();
            compteur++;
        }
    }
}

这两种方法都会在一段时间内一个接一个地调用,所以第二种方法几乎不会起作用,因为我需要在经过move()方法之后完全按下“Space”。我想保持2种方法分离,有没有办法使这项工作?

1 个答案:

答案 0 :(得分:0)

一种简单的方法是制作新方法read_keyboard()

该功能应存储键盘状态,而您的其他方法只能读取该存储状态。

if(_kbhit() != 0)
{
    // I'm only explicitly writing "this->" to show that it's a member variable.
    this->touche = _getch();
}
else
{
    this->touche = 0;
}

例如,move现在变为:

if(touche == 'k' || touche == 'l')
{
    modifyPosition(touche);
}