0

2 つのメソッドを持つ Spaceship オブジェクトがあります。最初のメソッドは move()

char touche;

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

2番目のメソッドはshoot()です

char touche;

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

両方のメソッドが次々に呼び出されるため、2 番目のメソッドはほとんど機能しません。これは、move() メソッドを通過した直後に「スペース」を押す必要があるためです。2 つの方法を分けておきたいのですが、これを機能させる方法はありますか?

4

1 に答える 1

0

簡単な方法の 1 つは、新しいメソッドを作成すること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);
}
于 2013-03-30T17:34:14.557 に答える