Tastaturabfrage mehrere Tasten gleichzeitig abfragen



  • Ich bin gerade dabei ein kleines Raumschiffspielchen zu Programieren hb jetzt aber das Problem dass wen Player 2 schießt und Player 1 sich bewegen will das Raumschif von Player 2 kaum beweg.

    if (GetAsyncKeyState(VK_SPACE) < 0)
      {
        //Code für Schüsse
      }
    
      if (GetAsyncKeyState(VK_UP) < 0)
      {
     p1richtung = "oben" ;
      P1->Picture->LoadFromFile(pfad + p1raumschifftype + p1zusatz + "o.bmp");
      if (P1->Top > 0)
      {
         P1->Top = P1->Top - p1bewegung;
      }
       }
    
       if (GetAsyncKeyState(VK_DOWN) < 0)
      {
     p1richtung = "unten" ;
      P1->Picture->LoadFromFile(pfad + p1raumschifftype + p1zusatz + "u.bmp");
      if (P1->Top + P1->Height < Form1->ClientHeight - 10)
      {
      P1->Top = P1->Top + p1bewegung;
      }
      }
    
       if (GetAsyncKeyState(VK_RIGHT) < 0)
      {
       p1richtung = "rechts" ;
      P1->Picture->LoadFromFile(pfad + p1raumschifftype + p1zusatz + "r.bmp");
      if (P1->Left + P1->Width < Form1->ClientWidth)
      {
      P1->Left =  P1->Left + p1bewegung;
      }
      }
    
       if (GetAsyncKeyState(VK_LEFT) < 0)
      {
      p1richtung = "links" ;
      P1->Picture->LoadFromFile(pfad + p1raumschifftype + p1zusatz + "l.bmp");
      if (P1->Left > 0)
      {
      P1->Left =  P1->Left - p1bewegung;
      }
      }
    
      // Player2 Tasten-Abfrage
    
     if (GetAsyncKeyState(VK_LCONTROL) < 0)
      {
         //Code für Schüsse
      }
    


  • du willst also in jedem frame, wenn eine taste gedrückt ist das Bild mit LoadFromFile laden? ich würde dir empfehlen mal die Klasse TBitmap anzuschauen...



  • Hier läuft doch konzeptionell etwas falsch:

    - "Gleichzeitig gibt es keine Tastendrücke immer nur hintereinander (ist eine Frage des Zeitabstandes)

    - üblicherweise läd man alle Grafiken die das speil immer braucht vorab.

    - man schafft sich eine "Zeichenroutine", die jederzeit das Spielgeschehen zeichnet. Dazu wäre ein Thread nicht schlecht. Nun programmiert, das Spiel so, dass dieser Routine nur die Daten übergeben werden, die sie zeichnen soll.


Log in to reply