Tetris

TheDescent

Mitglied
Hallo

Ich versuche grade Tetris zu programmeiren und bin nun auf folgendes Problem gestoßen :
mein Stein fällt runter, aber lässt sich nicht durch Tastenbewegung "steuern";
Ich habe einen ActionListener implemtiert der mir durch einen Timer den Stein fallen lässt , dorthinein gebe ich auch den befehl zum aufruf der methode des keylisteners der klasse klotz, leide funktioniert dies nicht , da er nich das event der klasse klotz erkennt

bitte um eure hilfe , hier mein quellcode:


actionPerformed Methode
[JAVA=42]
public void actionPerformed(ActionEvent a) {


qu.fall();
repaint();
qu.keyPressed(e);


}
[/code]


keypressed methode:
[JAVA=42]
public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();


if (key == KeyEvent.VK_LEFT) {
x= x-10;
}

if (key == KeyEvent.VK_RIGHT) {
y = y+10;
}

}




[/code]
qu ist eine Unterklasse von Klotz, die den KeyListener jeweils vererbt an die unterschiedlichen Tetrominos
 

babuschka

Top Contributor
Hallo,

hast Du Deiner Spielkomponente auch den KeyListener hinzugefügt?
Probiere es auch einmal mit Testausgaben in den KeyListener-Methoden - so erkennst Du, ob sie überhaupt aufgerufen werden.

JohnMcLane

PS:
Mit der KeyPressed-Methode musst Du unter Linux besonders aufpassen, da hier gerne wiederholte KeyPress- und Release-Events gesendet werden, wenn die Taste länger gedrückt wurde. In meiner aktuellen Tetris-Implementierung arbeite ich daran noch.
 

Quaxli

Top Contributor
Das Problem ist vermutlich, daß Du die Position Deines Steins im Listener veränderst.
So Sachen wie x = x+10 hat in den Listenern nix verloren. ;) Dort solltest Du nur boolean-Werte ändern.
Also statt x+=10 lieber right = true
Diese boolean-Werte fragst Du dann innerhalb Deines GameLoops ab und alles wird gut. :D:D:D
 

Ähnliche Java Themen

Neue Themen


Oben