master
obai 2024-09-04 14:23:37 +02:00
parent 4052a1392b
commit 6f4f781a92
2 changed files with 127 additions and 79 deletions

View File

@ -19,17 +19,18 @@ public class MouseMotionListenerBeispiel {
@Override @Override
public void mouseDragged(MouseEvent e) { public void mouseDragged(MouseEvent e) {
mousePosition.setText(" Mouse Position: (" + e.getX() + ", " + e.getY() + ")");
} }
@Override @Override
public void mouseMoved(MouseEvent e) { public void mouseMoved(MouseEvent e) {
mousePosition.setText(" Mouse Position: (" + e.getX() + ", " + e.getY() + ")");
} }
}); });
frame.setSize(300, 250); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250 frame.setSize(700, 500); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.setLayout(new FlowLayout()); // لترتيب الأشياء التي أضفناها فيها FlowLayout هنا جعلنا النافذة تستخدم الـ frame.setLayout(new FlowLayout()); // لترتيب الأشياء التي أضفناها فيها FlowLayout هنا جعلنا النافذة تستخدم الـ
frame.setVisible(true); // هنا جعلنا النافذة مرئية frame.setVisible(true); // هنا جعلنا النافذة مرئية

View File

@ -7,107 +7,154 @@ import java.awt.event.KeyListener;
public class PongGame { public class PongGame {
static int xRect1 = 10; //Eigenschaften des Rechtecks
static int yRect1 = 10; static JPanel rect1;
static int bewegung = 1; static int xPositionRect1 = 300;
static int yPositionRect1 = 490;
public static void main(String[] args) { static int rectWidth = 100;
static int rectHeight = 7;
static int bewegungRect = 1;
//--------------------------
//Eigenschaften des Kreises
static JPanel kreis;
static int xPositioKreis = 300;
static int yPositionKreis = 400;
static int kreisWidth = 10;
static int kreisHeight = 10;
static int bewegungKreisX = 1;
static int bewegungKreisY = 1;
//---------------------------
//Widow Eigenschaften
static int widthWindow = 700;
static int heihtWindow = 500;
//------------------------------
public static void main(String[] args) {
JFrame window = new JFrame(); JFrame window = new JFrame();
window.setSize(700, 700); window.setSize(widthWindow, heihtWindow);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setTitle("PongGame"); window.setTitle("PongGame");
window.setLayout(null); window.setLayout(null);
window.setResizable(false);
kreis = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.white);
g.drawOval(0, 0, kreisWidth, kreisHeight);
}
};
kreis.setBounds(xPositioKreis, yPositionKreis, kreisWidth, kreisHeight);
Timer timerKreis = new Timer(5, e -> {
// Wenn der Kreis die Oberkante erreicht, kehrt er die Richtung um
if (yPositionKreis == 0)
bewegungKreisY = -bewegungKreisY;
// if (yPositionKreis >= window.getHeight() - kreisHeight)
// bewegungKreisY = -bewegungKreisY;
//
// Erstelle Rechteck für Ball und Rechteck
Rectangle ballBounds = new Rectangle(xPositioKreis, yPositionKreis, kreisWidth, kreisHeight);
Rectangle rectBounds = new Rectangle(xPositionRect1, yPositionRect1, rectWidth, rectHeight);
// Überprüfe Kollision zwischen Ball und Rechteck
if (ballBounds.intersects(rectBounds)) {
bewegungKreisY = -bewegungKreisY; // Ball prallt ab
}
if (xPositioKreis <= 0)
bewegungKreisX = -bewegungKreisX;
if (xPositioKreis >= window.getWidth() - kreisWidth)
bewegungKreisX = -bewegungKreisX;
yPositionKreis -= bewegungKreisY;
xPositioKreis += bewegungKreisX;
kreis.setBounds(xPositioKreis, yPositionKreis, kreisWidth, kreisHeight);
kreis.repaint();
});
timerKreis.start();
rect1 = new JPanel() {
JPanel rect1 = new JPanel() {
@Override @Override
public void paintComponent(Graphics g) { public void paintComponent(Graphics g) {
super.paintComponent(g); // Sicherstellen, dass das Panel korrekt gezeichnet wird super.paintComponent(g); // Sicherstellen, dass das Panel korrekt gezeichnet wird
g.setColor(Color.white); g.setColor(Color.white);
g.fillRect(0, 0, 10, 90); g.fillRect(0, 0, rectWidth, rectHeight);
} }
}; };
rect1.setBounds(xRect1, yRect1, 10, 90); rect1.setBounds(xPositionRect1, yPositionRect1, rectWidth, rectHeight);
Timer timerRect = new Timer(710, e -> {
window.addKeyListener(new KeyListener() {
Timer timer = new Timer(710, e -> { @Override
window.addKeyListener(new KeyListener() { public void keyTyped(KeyEvent e) {
@Override
public void keyTyped(KeyEvent e) {
}
@Override }
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() ==KeyEvent.VK_DOWN) {
// Bewege das Rechteck
yRect1 += bewegung ;
// Aktualisiere dann die Position des Panels
rect1.setBounds(xRect1, yRect1, 10, 90);
// Fordere das Panel auf, sich neu zu zeichnen
rect1.repaint();
}
}
@Override @Override
public void keyReleased(KeyEvent e) { public void keyPressed(KeyEvent e) {
}
});
});
// Starte den Timer if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
timer.start(); bewegungRect = 1;
if (xPositionRect1 >= widthWindow - 95)
bewegungRect = 0;
// Setze den Fokus auf das Fenster, um die KeyListener zu aktivieren else
xPositionRect1 += bewegungRect;
rect1.setBounds(xPositionRect1, yPositionRect1, rectWidth, rectHeight);
// Fordere das Panel auf, sich neu zu zeichnen
rect1.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
bewegungRect = 1;
if (xPositionRect1 <= 0)
bewegungRect = 0;
else
xPositionRect1 -= bewegungRect;
}
rect1.setBounds(xPositionRect1, yPositionRect1, rectWidth, rectHeight);
// Fordere das Panel auf, sich neu zu zeichnen
rect1.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
});
});
timerRect.start();
window.setFocusable(true); window.setFocusable(true);
window.requestFocusInWindow(); window.requestFocusInWindow();
JPanel rect2 = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.white);
g.fillRect(0, 0, 10, 90);
}
};
rect2.setBounds(650, 10, 10, 90);
window.add(rect1); window.add(rect1);
window.add(rect2); window.add(kreis);
/* /*
* JFrame besteht aus mehreren Schichten: Eine davon ist das ContentPane, welches der Bereich ist, in den die meisten Komponenten wie JPanel, JButton, etc. * JFrame besteht aus mehreren Schichten: Eine davon ist das ContentPane, welches der Bereich ist, in den die meisten Komponenten wie JPanel, JButton, etc.