Java/Tutorials/Karteneditor II Kapitel 3
In diesen Kapitel behandeln wir die Steuerung. Hier erstellen wir eine Klasse Steuerung, die die Schnittstelle KeyListener und dessen Methoden implementiert.
public class Steuerung implements KeyListener{ @Override public void keyPressed(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }
Im nächsten Schritt brauche wir 6 Klassen Variablen. 4 Davon sind zum überprüfen welche Pfeiltaste gerade gedrückt wird. Normalerweise würde 1 ausreichen, aber wir werden 4 verwenden falls ihr später eure Steuerung um das Diagonal laufen erweitern wollt. Die 5. Variable gibt an in welche Richtung ihr euch zuletzt bewegt habt und die 6. Variable ist dafür da um abzufragen ob ihr gerade eine Pfeiltaste gedrückt habt.
public class Steuerung implements KeyListener{ public int letzterichtung=0;// 3=hoch, 0=runter,1=links,2=rechts boolean bewegung=false; public boolean hoch=false; public boolean runter=false; public boolean links=false; public boolean rechts=false; @Override public void keyPressed(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }
Nun brauchen wir nur noch die Abfrage, welche Taste gerade gedrückt wird. Wir werden hierfür eine Switch-Anweisung verwenden. Über die KeyEvent Klasse Fragen wir mit der Methode getKeyCode()' ab welche Taste zurzeit gedrückt wird. Falls eine der gegeben Tasten gedrückt wird wird die entsprechende Klassen Variable auf true also wahr gesetzt, sowie die Variable bewegung und zwar in der Implementierten Methode keyPressed. Als nächstes wird die Richtung gesetzt. Dabei richten wir uns nach den RPG Maker Charset
Die Richtung nach oben, also die 4. Reihe werden wir die ID 3 geben, weil wir ja bei 0 Anfangen zu Zählen. Die Animation für das nach unten laufen sit in reihe 1. Daher vergeben wir die ID 0. Links wird die ID 1 zugewiesen und Rechts die ID 2. In Der Methode keyReleased() setzen wir alles auf false, also falsch. So das unser Char später stehen bleibt. Natürlich bis auf die Variable für die letzte Richtung.
public class Steuerung implements KeyListener{ public int letzterichtung=0;// 3=hoch, 0=runter,1=links,2=rechts boolean bewegung=false; public boolean hoch=false; public boolean runter=false; public boolean links=false; public boolean rechts=false; @Override public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_UP: letzterichtung=3; hoch=true; bewegung=true; break; case KeyEvent.VK_DOWN: letzterichtung=0; runter=true; bewegung=true; break; case KeyEvent.VK_LEFT: letzterichtung=1; links=true; bewegung=true; break; case KeyEvent.VK_RIGHT: letzterichtung=2; rechts=true; bewegung=true; break; } } @Override public void keyReleased(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_UP: hoch=false; bewegung=false; break; case KeyEvent.VK_DOWN: runter=false; bewegung=false; break; case KeyEvent.VK_LEFT: links=false; bewegung=false; break; case KeyEvent.VK_RIGHT: rechts=false; bewegung=false; break; } } @Override public void keyTyped(KeyEvent e) { } }
Nun fügen wir unserer Steuerung unsere FensterKlasse hinzu und zwar dem Fenster, weil z.B: nur ein JFrame ein Focus erhalten kann und ein JPanel z.B. nicht. Mit der JFrame Methode addKeyListener() fügen wir unseren KeyListener dem JFrame hinzu.
public class SpielFenster extends JFrame{ Steuerung steuerung; Karte karte; public SpielFenster() { steuerung=new Steuerung(); addKeyListener(steuerung); karte=Karte.ladeKarte("1.karte"); setSize(new Dimension(640,480)); setTitle("Spiel"); setVisible(true); } }
