diff --git a/Programmierung2/src/Algorithmus/SwitchCases.java b/Programmierung2/src/Algorithmus/SwitchCases.java new file mode 100644 index 0000000..e07b6fd --- /dev/null +++ b/Programmierung2/src/Algorithmus/SwitchCases.java @@ -0,0 +1,13 @@ +package Algorithmus; + +public class SwitchCases { + + public static void main(String[] args) { + /* + * Die Daten Typen, die erlaubt sind: + * - int, char, enum, String und die Wrapper-Typen (Integer, Character, etc.). + */ + + } + +} diff --git a/Programmierung2/src/Algorithmus/VariadischeFunktionen.java b/Programmierung2/src/Algorithmus/VariadischeFunktionen.java new file mode 100644 index 0000000..36348ce --- /dev/null +++ b/Programmierung2/src/Algorithmus/VariadischeFunktionen.java @@ -0,0 +1,17 @@ +package Algorithmus; + +public class VariadischeFunktionen { + + public static int sum(int... numbers) { + int result = 0; + for (int number : numbers) + result += number; + + return result; + } + + public static void main(String[] args) { + System.out.println(sum(1, 2, 3)); + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/EventsButton/MouseMotionListenerBeispiel.java b/Programmierung2/src/GUIAnwendungen/EventsButton/MouseMotionListenerBeispiel.java index 346ae94..53f0c81 100644 --- a/Programmierung2/src/GUIAnwendungen/EventsButton/MouseMotionListenerBeispiel.java +++ b/Programmierung2/src/GUIAnwendungen/EventsButton/MouseMotionListenerBeispiel.java @@ -19,8 +19,10 @@ public class MouseMotionListenerBeispiel { @Override public void mouseDragged(MouseEvent e) { + + } @Override @@ -31,6 +33,7 @@ public class MouseMotionListenerBeispiel { }); frame.setSize(700, 700); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250 + frame.setSize(700, 500); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج frame.setLayout(new FlowLayout()); // لترتيب الأشياء التي أضفناها فيها FlowLayout هنا جعلنا النافذة تستخدم الـ frame.setVisible(true); // هنا جعلنا النافذة مرئية diff --git a/Programmierung2/src/Übungen/PongGame.java b/Programmierung2/src/Übungen/PongGame.java deleted file mode 100644 index 4761859..0000000 --- a/Programmierung2/src/Übungen/PongGame.java +++ /dev/null @@ -1,246 +0,0 @@ -package Übungen; - - -import javax.swing.*; -import java.awt.*; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; - -public class PongGame { - - //Eigenschaften des Rechtecks1 - static JPanel rect1; - static int xPositionRect1 = 300; - static int yPositionRect1 = 550; - - static int rectWidth = 100; - static int rectHeight = 7; - - static int daleyRect = 300; - 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 daleyKreis = 5; - static int bewegungKreisX = 1; - static int bewegungKreisY = 1; - //--------------------------- - - //Window Eigenschaften - static int widthWindow = 700; - static int heihtWindow = 600; - //------------------------------ - - //Eigenschaften des Rechtecks2 - static JPanel rect2; - static int xPositionRect2 = widthWindow/2; - static int yPositionRect2 = 5; - static int rect2Width = 100; - static int rect2Height = 7; - static int daleyRect2 = 300; - static int bewegungRect2 = 1; - - Graphics g; - public static void main(String[] args) { - JFrame window = new JFrame(); - window.setSize(widthWindow, heihtWindow); - window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - window.setTitle("PongGame"); - window.setLayout(null); - window.setResizable(false); - - rect2 = new JPanel() { - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - g.setColor(Color.white); - g.fillRect(0, 0, rect2Width, rect2Height); - } - - }; - rect2.setBounds(xPositionRect2,yPositionRect2,rect2Width,rect2Height); - Timer timerRect2 = new Timer(daleyRect2, e -> { - window.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - - } - - @Override - public void keyPressed(KeyEvent e) { - - if (e.getKeyCode() == KeyEvent.VK_D) { - bewegungRect2 = 1; - if (xPositionRect2 >= widthWindow - 95) - bewegungRect2 = 0; - - else - xPositionRect2 += bewegungRect2; - - rect2.setBounds(xPositionRect2, yPositionRect2, rect2Width, rect2Height); - // Fordere das Panel auf, sich neu zu zeichnen - rect2.repaint(); - } - - if (e.getKeyCode() == KeyEvent.VK_A) { - bewegungRect2 = 1; - if (bewegungRect2 <= 0) - bewegungRect = 0; - else - xPositionRect2 -= bewegungRect2; - - } - rect2.setBounds(xPositionRect2, yPositionRect2, rect2Width, rect2Height); - // Fordere das Panel auf, sich neu zu zeichnen - rect2.repaint(); - - } - - @Override - public void keyReleased(KeyEvent e) { - - } - }); - - }); - - - - timerRect2.start(); - - - - 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(daleyKreis, e -> { - // Erstelle Rechteck für Ball und Rechteck - Rectangle ballBounds = new Rectangle(xPositioKreis, yPositionKreis, kreisWidth, kreisHeight); - Rectangle rectBounds = new Rectangle(xPositionRect1, yPositionRect1, rectWidth, rectHeight); - Rectangle rectBounds2 = new Rectangle(xPositionRect2, yPositionRect2, rect2Width, rect2Height); - - // Wenn der Kreis die Oberkante erreicht, kehrt er die Richtung um - if (ballBounds.intersects(rectBounds2)) - bewegungKreisY = -bewegungKreisY; - -// if (yPositionKreis >= window.getHeight() - kreisHeight) -// bewegungKreisY = -bewegungKreisY; -// - - - // Überprüfe Kollision zwischen Ball und Rechteck - if (ballBounds.intersects(rectBounds)) { - bewegungKreisY = -bewegungKreisY; - } - - - 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() { - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); // Sicherstellen, dass das Panel korrekt gezeichnet wird - g.setColor(Color.white); - g.fillRect(0, 0, rectWidth, rectHeight); - } - }; - rect1.setBounds(xPositionRect1, yPositionRect1, rectWidth, rectHeight); - - Timer timerRect = new Timer(daleyRect, e -> { - window.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - - } - - @Override - public void keyPressed(KeyEvent e) { - - if (e.getKeyCode() == KeyEvent.VK_RIGHT) { - bewegungRect = 1; - if (xPositionRect1 >= widthWindow - 95) - bewegungRect = 0; - - 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.requestFocusInWindow(); - - 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. - * eingefügt werden. Die Methode getContentPane() gibt dieses ContentPane zurück, das dann bearbeitet werden kann. - * Hintergrundfarbe setzen: Wenn du die Hintergrundfarbe des gesamten Fensters auf Schwarz setzen möchtest, - * ohne die JPanel-Komponenten selbst zu beeinflussen, setzt du die Hintergrundfarbe des ContentPane. - */ - window.getContentPane().setBackground(Color.black); - window.setVisible(true); - } - - } - - - diff --git a/Programmierung2/src/Übungen/Ponggame/Ball.java b/Programmierung2/src/Übungen/Ponggame/Ball.java index e199e0c..92508bc 100644 --- a/Programmierung2/src/Übungen/Ponggame/Ball.java +++ b/Programmierung2/src/Übungen/Ponggame/Ball.java @@ -19,6 +19,7 @@ public class Ball extends JPanel implements Runnable { // Score Labels JLabel scoreSpieler1 = new JLabel ("Score: " + spieler1.getScore()); JLabel scoreSpieler2 = new JLabel ("Score: " + spieler2.getScore()); + int delay = 4; double ybewegung; @@ -48,9 +49,6 @@ public class Ball extends JPanel implements Runnable { if (ball.y <= 0 || ball.y >= 650) ybewegung = -ybewegung; - - - ball.y += ybewegung; ball.x += xbewegung; setBounds(ball.x, ball.y, ball.width, ball.height); @@ -78,20 +76,19 @@ public class Ball extends JPanel implements Runnable { ybewegung = ybewegung + (rand.nextDouble() - 0.5) * 0.5; } - if (ball.x <= 0) { + if (ball.x <= 0) { // Spieler 2 bekommt einen Punkt spieler2.setScore(spieler2.getScore() + 1); System.out.println("Spieler 2 Score: " + spieler2.getScore()); resetBall(); } - if (ball.x >= 680) { + if (ball.x >= 680) { // Spieler 1 bekommt einen Punkt spieler1.setScore(spieler1.getScore() + 1); System.out.println("Spieler 1 Score: " + spieler1.getScore()); resetBall(); } - updateScores(); + } - public void resetBall() { ball.x = 700 / 2; ball.y = 700 / 2; diff --git a/Programmierung2/src/Übungen/Ponggame/ComputerGegener.java b/Programmierung2/src/Übungen/Ponggame/ComputerGegener.java new file mode 100644 index 0000000..56397e0 --- /dev/null +++ b/Programmierung2/src/Übungen/Ponggame/ComputerGegener.java @@ -0,0 +1,59 @@ +package Übungen.Ponggame; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Rectangle; + +import javax.swing.JPanel; + +public class ComputerGegener extends JPanel implements Runnable { + int id; + final int width = 8; + final int height = 60; + int yPosition; + int xPosition; + int score; + int ybewegung = 1; + int dealy = 6; + Rectangle schläger; + + public ComputerGegener(int x, int y, int id) { + this.xPosition = x; + this.yPosition = y; + this.id = id; + this.score = 0; + schläger = new Rectangle(x, y, width, height); + } + + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + g.setColor(Color.white); + g.fillRect(schläger.x, schläger.y, schläger.width, schläger.height); + + } + + public void move() { + schläger.y += ybewegung; + if (schläger.y <= 0 ||schläger.y >= 600 ) + ybewegung = -ybewegung; + + setBounds(schläger.x, schläger.y, schläger.width, schläger.height); + repaint(); + } + + + @Override + public void run() { + try { + while (true) { + move(); + Thread.sleep(dealy); + } + } catch (Exception e) { + System.err.println(e.getMessage()); + } + + } +} diff --git a/Programmierung2/src/Übungen/Ponggame/GameWindwo.java b/Programmierung2/src/Übungen/Ponggame/GameWindwo.java index b42c167..3a79357 100644 --- a/Programmierung2/src/Übungen/Ponggame/GameWindwo.java +++ b/Programmierung2/src/Übungen/Ponggame/GameWindwo.java @@ -32,15 +32,14 @@ public class GameWindwo extends JFrame { ball.scoreSpieler1.setBounds(10, 10, 100, 10); ball.spieler2.setBounds(WINDOW_WIDTH - 40, WINDOW_HEIGHT / 2, 8, 60); - ball.scoreSpieler2.setForeground(Color.white); - ball.scoreSpieler2.setBounds(WINDOW_WIDTH - 100, 10, 100, 10); - + ball.spieler2.setForeground(Color.white); + ball.scoreSpieler2.setBounds(600, 10, 100, 10); + this.add(ball); this.add(ball.spieler1); this.add(ball.scoreSpieler1); this.add(ball.spieler2); this.add(ball.scoreSpieler2); - this.add(blackScreen); getInputs(); }