Hier der Quellcode:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Pong extends JPanel {
int x = 30, y = 300; // Anfangskoordinaten Schläger 1
int Px = 200, Py = 200; //Anfangskoordinaten Ball
int x2 = 770, y2 = 300; //Anfangskoordinaten Schläger 2
int dPx = 10, dPy = 10; // Geschwindigkeit Ball
boolean Spieler1o = false; // Pfeiltaste oben am Anfang Taste nicht gedrückt
boolean Spieler1u = false; // Pfeiltast unten
boolean Spieler2o = false;
boolean Spieler2u = false;
public Pong() {
setPreferredSize(new Dimension(800, 600)); // Fenstergröße
Ball neu = new Ball();
neu.start(); // Thraed Ball wird gestartet
Schläger s = new Schläger(); // Thread Schläger wird gestartet
s.start();
// Hier wollte ich die Buttons setzten
button = new JButton("Button");
Pong.setLayout(null);
button.setBounds(100,20,100,20);
Pong.add(button);
}
public void paint(Graphics gr) { // beiden Schläger und Ball
Graphics2D g = (Graphics2D) gr; // werden gezeichnet
g.setColor(Color.WHITE);
g.fill(g.getClipBounds()); // damit die Zeichnung überschrieben wird
g.setColor(Color.BLACK);
g.fillRect(x, y, 10, 80); // Ball und Schläger werden gezeichnet
g.fillOval(Px, Py, 30, 30);
g.fillRect(x2, y2, 10, 80);
}
class Ball extends Thread { // thread für Ball
void bewegen() {
Px = Px + dPx; //die Bewegung
Py = Py + dPy;
if (Px < 0) { // Ball prallt von der Wand ab
Px = 0;
dPx = -dPx;
}
if (Py < 0) { // Ball prallt von der Wand ab
Py = 0;
dPy = -dPy;
}
if (Py > 570) { // Ball prallt von der Wand ab
Py = 570;
dPy = -dPy;
}
if (Px > 770) { // Ball prallt von der Wand ab
Px = 770;
dPx = -dPx;
}
if (Px == 40 && Py >= y && Py <= y + 80) { // Hier soll er vom Schläger1 abprallen
Px = 40;
dPx = -dPx;
}
if (Px == 740 && Py >= y2 && Py <= y2 + 80) {//// Hier soll er vom Schläger2 abprallen
Px = 740;
dPx = -dPx;
dPy = -dPy;
}
repaint();
}
public void run() { // Thread für Ball
while (!isInterrupted()) {
bewegen();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
return;
}
}
}
}
class Schläger extends Thread implements KeyListener {
Schläger() {
addKeyListener(this); // KeyListenr wird hinzugefügt
}
public void run() {
while (true) { // solange Spieler Taste drückt
//wird Schläger bewegt
if (Spieler1o == true) { // Bewegung Schläger1
y -= 12;
}
if (Spieler1u == true) {
y += 12;
}
if (Spieler2o == true) { // Bewegung Schläger2
y2 -= 12;
}
if (Spieler2u == true) {
y2 += 12;
}
if (y2 > 520) { // 600-80 wegen Schlägerlänge
y2 = 520; // Damit die Schläger nicht aus dem Bild verschwinden
}
if (y2 < 0) {
y2 = 0;
}
if (y < 0) {
y = 0;
}
if (y > 520) {
y = 520;
}
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void keyPressed(KeyEvent e) { // Spieler 1 hier wird geguckt ob Taste gedrückt
if (e.getKeyCode() == KeyEvent.VK_W) {
Spieler1o = true;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
Spieler1u = true;
}
if (e.getKeyCode() == KeyEvent.VK_UP) { // Spieler2 hier wird geguckt ob Taste gedrückt
Spieler2o = true;
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
Spieler2u = true;
}
}
public void keyReleased(KeyEvent e) { // Hier ob Taste wieder losgelassen
// wenn ja stoppt Schlägerbewegung
if (e.getKeyCode() == KeyEvent.VK_W) {
Spieler1o = false;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
Spieler1u = false;
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
Spieler2o = false;
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
Spieler2u = false;
}
}
public void keyTyped(KeyEvent e) {
}
}
}
und die Hauptklasee:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Fenster extends JFrame {
private Pong pong = new Pong();
public Fenster() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(pong);
pong.PositionBall();
pack();
getRootPane();setVisible(true);
pong.PositionSchläger2();
pong.PositionSchläger1();
pong.setFocusable(true);
}
public static void main(String[] args) {
new Fenster();
}
}