Hallo zusammen,
ich versuche gerade Pong zu Programmieren.
Das geht ja teilweise über die Graphics-Klasse. Ich will es aber über Swing (mit BUttons als Paddel und Ball) probieren.
Um die Bewegung des Paddels zu steuern nutze ich einen Keylistener. Wenn ich den Keylistener auf das Container-Objekt setze (cp), dann greift er nicht. Wenn ich ihn aber auf ein JButton Objekt setze, dann funktioniert er. Das ist aber nicht zielführend, da man dann ja immer den Button focussiert (angeklickt) haben muss während dem Spiel.
Wisst Ihr ne Lösung dafür?
Viele Grüße
ich versuche gerade Pong zu Programmieren.
Das geht ja teilweise über die Graphics-Klasse. Ich will es aber über Swing (mit BUttons als Paddel und Ball) probieren.
Um die Bewegung des Paddels zu steuern nutze ich einen Keylistener. Wenn ich den Keylistener auf das Container-Objekt setze (cp), dann greift er nicht. Wenn ich ihn aber auf ein JButton Objekt setze, dann funktioniert er. Das ist aber nicht zielführend, da man dann ja immer den Button focussiert (angeklickt) haben muss während dem Spiel.
Wisst Ihr ne Lösung dafür?
Viele Grüße
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 03.02.2018
* @author
*/
public class Pongswing extends JFrame {
// Anfang Attribute
private JButton paddel1 = new JButton();
private JButton ball = new JButton();
// Ende Attribute
public Pongswing() {
// Frame-Initialisierung
super();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 1200;
int frameHeight = 1000;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setTitle("Pongswing");
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
paddel1.setBounds(168, 384, 33, 150);
paddel1.setText("paddel1");
paddel1.setMargin(new Insets(2, 2, 2, 2));
paddel1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
paddel1_ActionPerformed(evt);
}
});
cp.add(paddel1);
ball.setBounds(600, 496, 30, 30);
ball.setText("ball");
ball.setMargin(new Insets(2, 2, 2, 2));
ball.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ball_ActionPerformed(evt);
}
});
cp.add(ball);
//Hier stand vorher PongSwing.addKeylistener
//Dann motzt er aber rum, dass der Keylistener nicht static(ohne Objekt) aufgerufen werden kann
//Dewegen das passende Objekt --> den Container cp nehmen
cp.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
cp_KeyPressed(evt);
}
});
cp.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent evt) {
cp_KeyReleased(evt);
}
});
// Ende Komponenten
setVisible(true);
} // end of public Pongswing
//Globale Variablen
boolean moveUpP1=false;
boolean moveDownP1=false;
int posP1_x= paddel1.getBounds().x;
int posP1_y= paddel1.getBounds().y;
// Anfang Methoden
public static void main(String[] args) {
new Pongswing();
} // end of main
public void paddel1_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
} // end of paddel1_ActionPerformed
public void ball_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
} // end of ball_ActionPerformed
public void cp_KeyPressed(KeyEvent evt) {
// TODO hier Quelltext einfügen
if (evt.getKeyCode()==KeyEvent.VK_W) {
moveUpP1=true;
System.out.println("W gedrück");
} // end of if
else if (evt.getKeyCode()==KeyEvent.VK_S){
moveDownP1=true;
System.out.println("S gedrückt");
} // end of if-else
} // end of Pongswing_KeyPressed
public void cp_KeyReleased(KeyEvent evt) {
// TODO hier Quelltext einfügen
if (evt.getKeyCode()==KeyEvent.VK_W) {
moveUpP1=false;
System.out.println("W released");
} // end of if
else if (evt.getKeyCode()==KeyEvent.VK_S){
moveDownP1=false;
System.out.println("S release");
} // end of if-else
} // end of Pongswing_KeyReleased
public void move(){
while (moveUpP1==true) {
paddel1.setBounds(posP1_x, posP1_y+1, 33, 150);
} // end of while
}
// Ende Methoden
} // end of class Pongswing
Zuletzt bearbeitet: