2016-07-12 15 views
2

Er Leute ich bin Lukas und ich lerne Java, aber ich habe eine Frage: Wie kann ich die Methode keyPressed (KeyListener evt) in einer Schleife aufrufen? Ich mag ein einfaches 2D-Java-Spiel programmieren, und hier ist mein Code der keyPressed Methode:Wie kann ich die keyPressed() Methode in einer Schleife aufrufen?

private void KeyPressed(java.awt.event.KeyEvent evt) { 

    key = evt.getKeyCode(); 

     if (key == KeyEvent.VK_W) { 

      direction = 1; 

      PlayerMovement(); 
     } 
     if (key == KeyEvent.VK_S) { 

      direction = 2; 

      PlayerMovement(); 
     } 
     if (key == KeyEvent.VK_D) { 

      direction = 3; 
     } 
} 
+1

Zeigen Sie Ihren aktuellen Code - was haben Sie versucht? Was versuchst du zu erreichen? – nhouser9

+0

Ok, Sie haben etwas von Ihrem Code gezeigt. Jetzt sagen Sie uns, was Sie eigentlich machen wollen. Was macht dein Programm jetzt und was willst du machen? – nhouser9

+0

Ich möchte ein 2D-Java-Spiel (Grafiken wie Pokemon) programmieren, in diesem Spiel kann ich laufen, ich muss jedes Mal die Taste drücken, um eine Animation des Gehens zu bekommen. Ich möchte feststellen, dass ich den Schlüssel halten kann, aber es funktioniert nicht, denn wenn Sie einen Schlüssel zum Beispiel 2 Sekunden halten, läuft der Spieler etwa 4 Sekunden in die gleiche Richtung und Sie können nichts zwischen – lukas

Antwort

0
public class GameLoop implements Runnable { 
    public void run() { 
     //initialization goes here 
     while(running){ 
      processInput(); 
      update(); 
      render(); 
     } 
    } 
    processUpdate() { 
     //here you listen to inputs 
    } 
} 

Sie können einige Boolesche Werte festlegen, um die aktuell gedrückten Tasten zu verfolgen. Setzen Sie beispielsweise movingRight = true;, wenn D gedrückt wird, und setzen Sie movingRight = false;, wenn D freigegeben ist. Im Update aktualisieren Sie Ihre Positionen entsprechend der aktuell gedrückten Tasten.

Eine Spielschleife sollte jedoch viel mehr enthalten. Dies ist nur ein sehr einfaches Modell.

Über Spiel-Schleifen: http://gameprogrammingpatterns.com/game-loop.html

+0

ok danke ich werde es versuchen – lukas

0

ich sagte Sie Threads verwenden, weil hier das Programm verwenden, aber wenn Sie einen Thread starten können Sie tun, was immer Sie das Programm immer noch wollen, funktioniert gut über Thread lernen, weil Spiel rund um Themen

private class Walk_thread extends java.lang.Thread{ 

public void run(){ 
//call the walk methode here 
PlayerMovement(); 
} 
} 

so sind, wenn der Schlüssel einen Thread erstellen, die playermovement gedrückt wird

if (key == KeyEvent.VK_W) { 

     direction = 1; 
new Walk_thread().start();//here the method run is called 
System.out.println("program will not stop the thread is walking and the program is continued too"); 
    } 
nennen
+0

Dank i wissen, meine Antwort war kompliziert, aber lesen Sie Thread-Tutorials, weil im Spiel werden Sie eine Menge Sache in der gleichen Zeit – Cherif

+0

impleme runnable anstelle von Thread zu erweitern. http://StackOverflow.com/Questions/541487/Implements-Runnable-VS-Extends-Thread – eldo

+0

Sie erstellen eine Thread- und Handling-Eingabe, die bei der Eingabe keinen Thread erstellt. – eldo

Verwandte Themen