Input/Output Auf Tasteneingabe warten

Dasha

Mitglied
Hi,

ich bastle gerade an einen Spiel. Da man es mit der Tastatur steuert muss man natürlich permanent abfragen ob was gedrückt wurde.

Meine Idee war jetzt, einen zweiten Thread dafür zu machen.
Einer ist für die Bewegung der Objekte zuständig und der andere fragt die Tastatureingaben ab.
Kann man es damit machen oder gibt es da auch bessere Möglichkeiten?

Trotz Mehrkernprozessoren (die fast jeder PC hat) sollte der Thread zwischendrin auch mal kurz schlafen um nicht die ganze Zeit Ressourchen zu verbraten? Welchen Wert sollte ich da auswählen?

mfg
 
G

Gast2

Gast
Üblicherweise hat man einen Thread für in dem die Gameloop läuft. Die Tastatureingaben werden nicht aktiv abgefragt sondern über bspw. KeyListener verarbeitet. In dem KeyListener wird man dann eine Variable setzen die die Gameloop abfragen und reagieren kann.
 

Dorfi

Mitglied
Ich bin auch gerade dabei ein Spiel zu programmieren. Bei mir ist die Steuerung schon fertig. Ich weis nicht ob dir dies etwas bringt aber ich stell sie dir einfach mal rein.

Java:
public void steuerung() {
       addKeyListener( new KeyAdapter(){
           @Override
           public void keyPressed (KeyEvent e) {
               if (e.getKeyChar() == 'w') {
                   car1.yCar = car1.yCar - 10;
                   repaint();
               }
               if (e.getKeyChar() == 's') {
                   car1.yCar = car1.yCar + 10;
                   repaint();
               }
               if (e.getKeyChar() == 'a') {
                   car1.xCar = car1.xCar - 10;
                   repaint();
               }
               if (e.getKeyChar() == 'd') {
                   car1.xCar = car1.xCar + 10;
                   repaint();
               }
           }
           
       });
       
    }
 

Plopo

Bekanntes Mitglied
Das Beispiel von Dorfi ist ok, aber am besten setzt du per KeyListener nur boolean Werte auf "true" oder "false".

z.B.
Java:
if(w = pressed)
{
   moveup = true;
}

in deinem Gameloop gibt es dann die Methode "move()". Welche einfach die X/Y Werte erhöht/verringert, solange ein Wert auf "true" sitzt.

Java:
if(moveup)
{
   player.x += 1;
}

Somit kannst du auch 2 oder mehr Tasten drücken und verarbeiten. Sprich, du kannst dich diagonal bewegen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
D Programm auf Enter warten lassen Java Basics - Anfänger-Themen 2
E Richtiges Warten Java Basics - Anfänger-Themen 8
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
G Wie kann ich 1s lang warten? Java Basics - Anfänger-Themen 1
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
R Threads aufeinander warten lassen? Java Basics - Anfänger-Themen 10
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
A Thread auf anderen warten Java Basics - Anfänger-Themen 2
C Warten auf Antwort Java Basics - Anfänger-Themen 22
S Threads Programm terminiert statt zu warten Java Basics - Anfänger-Themen 20
E ExecutorService warten bis alles fertig? Java Basics - Anfänger-Themen 5
A Threads Eine Klasse muss auf Variable der Anderen warten. Java Basics - Anfänger-Themen 6
A Activity1 soll auf Activity2 warten (Camera-Intent) Java Basics - Anfänger-Themen 5
D Threads Kartenspiel - auf legen warten Java Basics - Anfänger-Themen 15
B Methode warten lassen bis Button gedrückt wird Java Basics - Anfänger-Themen 16
JAVAnnik auf Threadende warten Java Basics - Anfänger-Themen 6
H Auf Threads warten Java Basics - Anfänger-Themen 3
S Warten bis alle Threads fertig sind Java Basics - Anfänger-Themen 12
I Auf DB-Operation warten Java Basics - Anfänger-Themen 2
R Thread soll auf andere Threads warten Java Basics - Anfänger-Themen 3
T Warteschlange warten lassen bis Ereignis Java Basics - Anfänger-Themen 27
A Main warten lassen bis Variable durch Button übergeben wird Java Basics - Anfänger-Themen 2
V Warten bis die Länge eines Strings nicht mehr 0 ist Java Basics - Anfänger-Themen 13
M prozess starten und warten bis dieser sich beendet Java Basics - Anfänger-Themen 3
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
D Auf Event warten Java Basics - Anfänger-Themen 4
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
M Warten bis Thread an einem Semaphore angekommen ist Java Basics - Anfänger-Themen 4
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
S Auf andere Methode warten Java Basics - Anfänger-Themen 7
B Während Schleife nicht auf Eingabe warten Java Basics - Anfänger-Themen 2
T auf vbscript warten Java Basics - Anfänger-Themen 3
S Thread warten abbrechen? Java Basics - Anfänger-Themen 5
C auf beendigung eines threads warten Java Basics - Anfänger-Themen 6
P Warten auf KeyTyped Java Basics - Anfänger-Themen 7
M warten in einer while-schleife Java Basics - Anfänger-Themen 12
L programm zum warten zwingen Java Basics - Anfänger-Themen 4
B Auf Programm warten Java Basics - Anfänger-Themen 2
S Auf Object warten Java Basics - Anfänger-Themen 2
K Auf File- Befehl warten. Java Basics - Anfänger-Themen 10
T eine Sekunde warten Java Basics - Anfänger-Themen 11
C Konsolenanwendung auf belibige Taste warten Java Basics - Anfänger-Themen 2
D Auf anderes Fenster Warten Java Basics - Anfänger-Themen 6
A Warten auf Userinput Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
T Auf Selection warten Java Basics - Anfänger-Themen 7
N Java Insel 6 lesen oder auf 7 warten ? Java Basics - Anfänger-Themen 11
S Programmablauf pausieren, bzw. auf Eingabe warten Java Basics - Anfänger-Themen 4
G Warten auf Eingabe Java Basics - Anfänger-Themen 12
G Thread soll warten Java Basics - Anfänger-Themen 5
F 1 Minute warten Java Basics - Anfänger-Themen 18
S Thread auf Thread warten lassen. Java Basics - Anfänger-Themen 2
G auf ende mehrerer threads warten Java Basics - Anfänger-Themen 2
B Timer / Thread warten Java Basics - Anfänger-Themen 3
G warten Java Basics - Anfänger-Themen 10
P Warten-Fenster Java Basics - Anfänger-Themen 8
vogella *Gelöst *Im Programm warten (wait()) Java Basics - Anfänger-Themen 2
A Bitte Warten Java Basics - Anfänger-Themen 2
P Externen Proceß starten und warten bis beendet? Java Basics - Anfänger-Themen 2
J Threads: warten bis erste aktion ausgeführt wurde Java Basics - Anfänger-Themen 6
G Eine Methode zum Warten? Java Basics - Anfänger-Themen 7
G Frage zum Warten auf und Aufwecken von Threads Java Basics - Anfänger-Themen 2
L Einfaches Warten in eine Schleife Java Basics - Anfänger-Themen 9
B auf mehrere Threads warten Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
S Auf JInternalFrame warten? Java Basics - Anfänger-Themen 2
R Warten, bis ein Prozess gestartet wurde Java Basics - Anfänger-Themen 23
M x Sekunden warten Java Basics - Anfänger-Themen 13
P Bitte um ein paar Tipps! (Threads, Warten auf Ereignisse,.) Java Basics - Anfänger-Themen 2
M Wie lässt man eine Methode warten ohne Threads zu benutzen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben