# Tetris



## TheDescent (5. Dez 2010)

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 (5. Dez 2010)

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 (6. Dez 2010)

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.


----------



## TheDescent (9. Dez 2010)

Danke, hab die Lösung gefunden


----------

