diff --git a/Programmierung2/src/DesignPatterns/All Design Patterns.odt b/Programmierung2/src/DesignPatterns/All Design Patterns.odt new file mode 100644 index 0000000..6d12157 Binary files /dev/null and b/Programmierung2/src/DesignPatterns/All Design Patterns.odt differ diff --git a/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton & Lazy Loading.pdf b/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton & Lazy Loading.pdf new file mode 100644 index 0000000..a243b9a Binary files /dev/null and b/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton & Lazy Loading.pdf differ diff --git a/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton.java b/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton.java new file mode 100644 index 0000000..262a0b4 --- /dev/null +++ b/Programmierung2/src/DesignPatterns/Erzeugungsmuster_CreationalPatterns/Singaleton/Singleton.java @@ -0,0 +1,52 @@ +package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Singaleton; + +/* + * - verhindert, dass von einer Klasse mehr als ein Objekt erstellt werden kann + * Das wird dadurch erreicht, dass das gewünschte Objekt in einer Klasse selbst erzeugt dann als statische Instanz abgerufen wird + * + * Eigenschaften: + * - Konstruktor muss als „private“ deklariert. + * - Eine öffentliche statische Methode, die die Instanz der Klasse zurückgib + * - private static memberVariable + */ +public class Singleton { + + // privater Konstruktor mit Zugriffsschutz von außen, also die kann nicht mit new erzeugt werden + private Singleton() {} + + // vor Zugriff von außen geschützt und statisch + private static Singleton erzeuge_Objekt = null; + + + // öffentliche Methode, Aufruf durch Code + // Aber Thread_unsicher + public static Singleton getObejekt_Thread_unsicher() { + + if (erzeuge_Objekt == null) + erzeuge_Objekt = new Singleton(); + return erzeuge_Objekt; + } + + // Thread_sicher: + public static synchronized Singleton getObejekt_Thread_sicher() { + if (erzeuge_Objekt == null) { + erzeuge_Objekt = new Singleton(); + } + return erzeuge_Objekt; + } + + + // test + public void print() { + System.out.println("Hallo Welt!"); + } + + + public static void main(String[] args) { + + // Verwendung Test + Singleton objekt = Singleton.getObejekt_Thread_unsicher(); + objekt.print(); // Hallo Welt! + } + +} diff --git a/Programmierung2/src/Übungen/Flappy_Bird/DrawImages.java b/Programmierung2/src/Übungen/Flappy_Bird/DrawImages.java new file mode 100644 index 0000000..284ad0f --- /dev/null +++ b/Programmierung2/src/Übungen/Flappy_Bird/DrawImages.java @@ -0,0 +1,46 @@ +package Übungen.Flappy_Bird; + +import java.awt.*; +import java.awt.event.KeyEvent; + +public class DrawImages extends Rectangle { + + Image image; + int y_pos; + int x_pos; + int speed = 5; + + DrawImages(int x, int y, int width, int height, Image image) { + super(x, y, width, height); + this.image = image; + } + + public void draw(Graphics g) { + g.drawImage(image, x, y, width, height, null); + } + + public void move() { + y += y_pos; + x += x_pos; + } + + + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_SPACE) + set_y(-speed); + } + + public void keyReleased(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_SPACE) + set_y(speed); + } + + public void set_y(int y) { + y_pos = y; + } + + public void set_x(int x) { + x_pos = x; + } + +} diff --git a/Programmierung2/src/Übungen/Flappy_Bird/GameFrame.java b/Programmierung2/src/Übungen/Flappy_Bird/GameFrame.java new file mode 100644 index 0000000..7fd83b5 --- /dev/null +++ b/Programmierung2/src/Übungen/Flappy_Bird/GameFrame.java @@ -0,0 +1,16 @@ +package Übungen.Flappy_Bird; + +import javax.swing.*; + +public class GameFrame extends JFrame { + + GameFrame(){ + this.add(new GamePanel()); + this.setTitle("Pong Game"); + this.setResizable(false); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + } +} diff --git a/Programmierung2/src/Übungen/Flappy_Bird/GamePanel.java b/Programmierung2/src/Übungen/Flappy_Bird/GamePanel.java new file mode 100644 index 0000000..359e056 --- /dev/null +++ b/Programmierung2/src/Übungen/Flappy_Bird/GamePanel.java @@ -0,0 +1,101 @@ +package Übungen.Flappy_Bird; + +import java.awt.*; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import javax.swing.*; + +public class GamePanel extends JPanel implements Runnable { + + final static int WIDTH_WINDOW = 600; + final static int HEIGH_WINDOW = 900; + Dimension fensterSize = new Dimension(WIDTH_WINDOW, HEIGH_WINDOW); + + DrawImages world; + DrawImages flappy; + DrawImages ground1,ground2; + + Thread game; + + boolean gameOver; + + GamePanel() { + drawImage(); + this.setFocusable(true); + this.setPreferredSize(fensterSize); + this.addKeyListener(new Steuern()); + this.gameOver = false; + game = new Thread(this); + game.start(); + } + + public void drawImage() { + world = new DrawImages(0, 0, WIDTH_WINDOW, HEIGH_WINDOW, new ImageIcon("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\Übungen\\Flappy_Bird\\world.png").getImage()); + flappy = new DrawImages(50, HEIGH_WINDOW / 2, 50, 50, new ImageIcon("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\Übungen\\Flappy_Bird\\flappy Bird.png").getImage()); + // Zwei Bodenbilder nebeneinander zeichnen + ground1 = new DrawImages(0, HEIGH_WINDOW - 100, WIDTH_WINDOW, 200, new ImageIcon("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\Übungen\\Flappy_Bird\\ground.png").getImage()); + ground2 = new DrawImages(WIDTH_WINDOW, HEIGH_WINDOW - 100, WIDTH_WINDOW, 200, new ImageIcon("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\Übungen\\Flappy_Bird\\ground.png").getImage()); + } + + public void paint(Graphics g) { + super.paint(g); + world.draw(g); + flappy.draw(g); + ground1.draw(g); + ground2.draw(g); + } + + public void move() { + flappy.move(); + move_ground(); + } + + public void move_ground() { + ground1.x -= 3; + ground2.x -=3; + + // Sobald das erste Bodenbild komplett aus dem Bildschirm verschwindet + if (ground1.x + ground1.width <= 0) { + ground1.x = ground2.x + ground2.width ; // Setze es rechts vom zweiten Bild + } + + // Sobald das zweite Bodenbild komplett aus dem Bildschirm verschwindet + if (ground2.x + ground2.width <= 0) { + ground2.x = ground1.x + ground1.width; // Setze es rechts vom ersten Bild + } + } + + public void checkKollision() { + if(flappy.intersects(ground1)) + gameOver = true; + } + + + + @Override + public void run() { + while (!gameOver) { + try { + move(); + checkKollision(); + repaint(); + Thread.sleep(10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + private class Steuern extends KeyAdapter { + @Override + public void keyPressed(KeyEvent e) { + flappy.keyPressed(e); + } + + @Override + public void keyReleased(KeyEvent e) { + flappy.keyReleased(e); + } + } +} + diff --git a/Programmierung2/src/Übungen/Flappy_Bird/GamePlay.java b/Programmierung2/src/Übungen/Flappy_Bird/GamePlay.java new file mode 100644 index 0000000..bb46b0f --- /dev/null +++ b/Programmierung2/src/Übungen/Flappy_Bird/GamePlay.java @@ -0,0 +1,9 @@ +package Übungen.Flappy_Bird; + +public class GamePlay { + + public static void main(String[] args) { + new GameFrame(); + } + +} diff --git a/Programmierung2/src/Übungen/Flappy_Bird/flappy Bird.png b/Programmierung2/src/Übungen/Flappy_Bird/flappy Bird.png new file mode 100644 index 0000000..15612cb Binary files /dev/null and b/Programmierung2/src/Übungen/Flappy_Bird/flappy Bird.png differ diff --git a/Programmierung2/src/Übungen/Flappy_Bird/ground.png b/Programmierung2/src/Übungen/Flappy_Bird/ground.png new file mode 100644 index 0000000..dd3dcca Binary files /dev/null and b/Programmierung2/src/Übungen/Flappy_Bird/ground.png differ diff --git a/Programmierung2/src/Übungen/Flappy_Bird/world.png b/Programmierung2/src/Übungen/Flappy_Bird/world.png new file mode 100644 index 0000000..ebb7f7a Binary files /dev/null and b/Programmierung2/src/Übungen/Flappy_Bird/world.png differ