Tastatur abfrage



  • Hallo ich habe eine frage wie kann man Im Borland c++ Builder abfragen welche Tasten gedrückt sind?
    Unten habe ich den Quelltext angehängt der nach der Abfrage der Tastatur ablaufen soll...
    Ich hoff ihr könnt mir helfen DANKE

    // Hier sollte die Tastaturabfrage hin...
    
    topBleierLinks=Spielfeld->BleierLinks->Top;      
    topBleierRechts=Spielfeld->BleierRechts->Top;     
      if (GetAsyncKeyState (VK_UP)&1==1)                
         rechtsUp(topBleierRechts);                         
      if (GetAsyncKeyState(VK_DOWN)&1==1)                
         rechtsDown(topBleierRechts);                     
      if (GetAsyncKeyState (VK_TAB)&1==1)                
         linksUp(topBleierLinks);                         
      if (GetAsyncKeyState(VK_SPACE)&1==1)                
         linksDown(topBleierLinks);                      }
      if ((GetAsyncKeyState (VK_UP)&1==1)&&(GetAsyncKeyState (VK_TAB)&1==1))
        {
        rechtsUp(topBleierRechts);
        linksUp(topBleierLinks);
        }
      if ((GetAsyncKeyState(VK_DOWN)&1==1)&&(GetAsyncKeyState(VK_SPACE)&1==1))
        {
        rechtsDown(topBleierRechts);
        linksDown(topBleierLinks);
        }
      if ((GetAsyncKeyState (VK_UP)&1==1) && (GetAsyncKeyState(VK_SPACE)&1==1))
        {
        rechtsUp(topBleierRechts);
        linksDown(topBleierLinks);
        }
      if ((GetAsyncKeyState(VK_DOWN)&1==1)&& (GetAsyncKeyState (VK_TAB)&1==1))
        {
         rechtsDown(topBleierRechts);
         linksUp(topBleierLinks);
        }
    

    Edit:
    Bitte die Code-Tags verwenden. Danke!



  • Hallo

    dazu kannst du im BCB am einfachsten die OnKeyDown,OnKeyUp bzw. OnKeyPress Events nehmen. Dort bekommst du den Virtual Key direkt, und must dann nicht mehr mit GetAsyncKeyState() diesen abfragen.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Borland C++ Builder (VCL/CLX) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht dazu noch KeyPReview der Form auf true setzen... dann sollte es mit OnKeyDown und OnKeyUp ohne Probleme zu schaffen sein 😉



  • Ja das Mit dem KeyDown habe ich schon ausprobiert aber das problem ist dass man nur eine taste gleichzeitg betätigen kann...wir programmieren ein oing pong spiel und es solte ja möglich seine beide Schläger gleichzeitig zu bewegen...wie könnt ich das machen? Mit dem Keypreview funktioniert das auch nicht....



  • hi,

    ich denke ihr wisst nicht wo ihr die Tasten abfragen sollt?
    hier mal ein beispiel wie es funktionieren könnte.

    void __fastcall TPingPongForm::StarteSpielClick(TObject *Sender)
    {
      // Spielschleife
      // -> läuft solange bis jemand ESC drückt oder
      //    einer gewinnt
      while (true)
      {
        short RetVal;
    
        // hier die Tasten abfragen und entsprechend reagieren
        if (RetVal = GetAsyncKeyState(VK_UP))
        {
          // höchstwertiges Bit auswerten
          if (RetVal & 0x0001)
            Memo1->Lines->Add("VK_UP pressed");
          else
            Memo1->Lines->Add("VK_UP released");
        }
    
        // Spiel beenden
        // -> Menü anzeigen, etc.
        if (GetAsyncKeyState(VK_ESCAPE))
          break;
    
        // ... anderes zeugs machen
    
        // jemand hat gewonnen
        // -> aufhören zu spielen
        if (Player1Wins || Player2Wins)
          break;
      }
    }
    


  • Der Spieler wird sich bedanken, dass er nichts von dem, was hier geschieht sieht, weil die ganze Schleife die ganze Zeit rechnet...



  • @Windoof

    Sag mal, liest Du die Beitraege eigentlich richtig durch, bevor Du antwortest?
    😕 😮 🕶



  • Danke für eure Antworten habs jetzt doch geschafft mit KeyDown und Keypreviwe...

    DANKE


Anmelden zum Antworten