D
delpiero223
Gast
Hallo,
ich hatte ein großes Menü für mein Pong-Spiel erstellt und zu Beginn noch alle ActionListener direkt via @Override definiert.
Nun bin ich hier im Forum darauf gestoßen, dass man diese zum Beispiel in eine MyActionListener-Klasse auslagern kann, welche ich dann auch einfach bei mir so genannt habe. Komischerweise funktioniert das ganze Menü nun aber nur noch bei der Farbauswahl und nicht mehr bei den anderen Einstellungen.
Da ich alle Optionen ähnlich aufgebaut habe, hier einfach mal ein paar Codeschnipsel:
Renderer-Klasse:
Auszug der Klasse MyActionListener:
Und noch der Auszug der Paddle-Klasse, auf den sich das Ganze bezieht:
Ich hoffe, ich habe keinen wichtigen Abschnitt vergessen (und hier auch das richtige Unterforum gewählt). Die y-Position wird einfach zum Zeichnen der Paddles verwendet. Es ist jetzt aber so, dass die KI-Geschwindigkeit nun immer auf "unbesiegbar" bzw 50 gesetzt wird, was doch eigentlich nicht sein kann.
Grüße,
Peer
ich hatte ein großes Menü für mein Pong-Spiel erstellt und zu Beginn noch alle ActionListener direkt via @Override definiert.
Nun bin ich hier im Forum darauf gestoßen, dass man diese zum Beispiel in eine MyActionListener-Klasse auslagern kann, welche ich dann auch einfach bei mir so genannt habe. Komischerweise funktioniert das ganze Menü nun aber nur noch bei der Farbauswahl und nicht mehr bei den anderen Einstellungen.
Da ich alle Optionen ähnlich aufgebaut habe, hier einfach mal ein paar Codeschnipsel:
Renderer-Klasse:
Java:
menuBar = new MenuBar();
Menu menu = new Menu("Spiel");
final Menu ki_optionen = new Menu("KI - Optionen");
final MenuItem ki_speed = new MenuItem("KI-Geschwindigkeit:");
final MenuItem ki_speed1 = new MenuItem("sehr langsam");
final MenuItem ki_speed2 = new MenuItem("langsam");
final MenuItem ki_speed3 = new MenuItem("normal");
final MenuItem ki_speed4 = new MenuItem("schnell");
final MenuItem ki_speed5 = new MenuItem("sehr schnell");
final MenuItem ki_speed6 = new MenuItem("unbesiegbar (experimentell)");
ki_optionen.add(ki_speed);
ki_optionen.add(ki_speed1);
ki_speed1.setActionCommand("ki_speed1");
ki_optionen.add(ki_speed2);
ki_speed1.setActionCommand("ki_speed2");
ki_optionen.add(ki_speed3);
ki_speed1.setActionCommand("ki_speed3");
ki_optionen.add(ki_speed4);
ki_speed1.setActionCommand("ki_speed4");
ki_optionen.add(ki_speed5);
ki_speed1.setActionCommand("ki_speed5");
ki_optionen.add(ki_speed6);
ki_speed1.setActionCommand("ki_speed6");
ki_speed1.addActionListener(new MyActionListener());
ki_speed2.addActionListener(new MyActionListener());
ki_speed3.addActionListener(new MyActionListener());
ki_speed4.addActionListener(new MyActionListener());
ki_speed5.addActionListener(new MyActionListener());
ki_speed6.addActionListener(new MyActionListener());
Auszug der Klasse MyActionListener:
Java:
package main;
import java.awt.Color;
import java.awt.event.ActionListener;
public class MyActionListener implements ActionListener {
if (e.getActionCommand().equalsIgnoreCase("ki_speed1")) {
Paddle.ki_speed = 1;
}
if (e.getActionCommand().equalsIgnoreCase("ki_speed2")) {
Paddle.ki_speed = 3;
}
if (e.getActionCommand().equalsIgnoreCase("ki_speed3")) {
Paddle.ki_speed = 4;
}
if (e.getActionCommand().equalsIgnoreCase("ki_speed4")) {
Paddle.ki_speed = 6;
}
if (e.getActionCommand().equalsIgnoreCase("ki_speed5")) {
Paddle.ki_speed = 8;
}
if (e.getActionCommand().equalsIgnoreCase("ki_speed6")) {
Paddle.ki_speed = 50;
}
}
Und noch der Auszug der Paddle-Klasse, auf den sich das Ganze bezieht:
Java:
static int ki_speed = 4;
Pong.paddle1.speed = ki_speed;
public void moveUp() {
this.y -= this.speed;
}
public void moveDown() {
this.y += this.speed;
}
Grüße,
Peer