Auf Tastendruck reagieren



  • Hi ihrs,

    Ich versuch grad eine Art Snake auf der Konsole zu programmieren, nun leider hab ich keine Idee wie ich das mit der Steurung realisieren soll. Kann mir jemand einen kleinen Schupser in die richtige Richtung geben? Hab bei google etwas von "GetAsyncKeyState" gelesen aber wie das funktioniert hab ich immer noch nicht verstanden 🙂
    Kann mir eienr von euch die Sache etwas näher bringen?
    Vielleicht ein Codebeispiel wie man das mit den 4 Pfeilen realisiert?

    Plattform: Win32
    Betriebs. Unabhän.: Nein

    Ciao
    anfängerin23



  • *hochschieb* 😛



  • GetAsyncKeyState() übergibst du einen Key-Code und erhältst die Rückmeldung, ob diese Taste gerade gedrückt ist. Das heißt, du müsstest einzeln alle in Frage kommenden Tasten abfragen:

    while(!ende)
    {
      //Schlange vorwärtsbewegen
    
      if(GetAsyncKeyState(VK_LEFT)&0x8000)//Wenn das MSB gesetzt ist, ist die Taste gedrückt
      {
        //drehe nach links
      }
      else if(GetAsyncKeyState(VK_RIGHT)&0x8000)
      {
        //drehe nach rechts
      }
      ...
    }
    

    Alternativ kannst du auch kbhit() verwenden, um auf Tastendrücke reagieren zu können:

    while(!ende)
    {
      //Animation
    
      if(_kbhit())//Taste gedrückt?
      {
        char ch=_getch();
        if(ch=='\0')ch=_getch();//Sondertasten werden als 0;xx eingelesen
        switch(ch)
        {
        case 75:
          //drehe nach links
          break;
        case 77:
          //drehe nach rechts
          break;
        ...
        }
      }
    }
    

    (für die Bedeutung der Werte siehe Konsolen-FAQ


Anmelden zum Antworten