From 83071611923ed24a8e2b9c142c95c466d97bb670 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Wed, 15 Apr 2020 13:39:49 +0200 Subject: [PATCH] =?UTF-8?q?graphische=20Oberfl=C3=A4che=20implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +- img/Lotto_Vorschaubild.png | Bin 0 -> 13151 bytes src/gfn/marc/Feld.java | 85 ++++++++++++++++++++++ src/gfn/marc/Form.java | 64 +++++++++++++++++ src/gfn/marc/Kreis.java | 22 ++++++ src/gfn/marc/Kreuz.java | 24 +++++++ src/gfn/marc/Lotto.java | 92 ++++++++++++++++++++++++ src/gfn/marc/Lottozahlen.java | 83 --------------------- src/gfn/marc/Rechteck.java | 44 ++++++++++++ src/gfn/marc/Spiel.java | 95 ++++++++++++++++++++++++ src/gfn/marc/Spielfeld.java | 70 ++++++++++++++++++ src/gfn/marc/Zug.java | 132 ++++++++++++++++++++++++++++++++++ 12 files changed, 630 insertions(+), 88 deletions(-) create mode 100644 img/Lotto_Vorschaubild.png create mode 100644 src/gfn/marc/Feld.java create mode 100644 src/gfn/marc/Form.java create mode 100644 src/gfn/marc/Kreis.java create mode 100644 src/gfn/marc/Kreuz.java create mode 100644 src/gfn/marc/Lotto.java delete mode 100644 src/gfn/marc/Lottozahlen.java create mode 100644 src/gfn/marc/Rechteck.java create mode 100644 src/gfn/marc/Spiel.java create mode 100644 src/gfn/marc/Spielfeld.java create mode 100644 src/gfn/marc/Zug.java diff --git a/README.md b/README.md index 442056a..4e7e48f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,2 @@ -# Aufgabe ArrayList Lottozahlen: - -a) Lassen Sie die zufälligen Lottozahlen 6 aus 49 ziehen, setzen Sie diese in eine ArrayList lottozahlen. - -b) Geben Sie Ihre getippten eigenen 6 Zahlen ein und ermitteln Sie die Anzahl der Richtigen! \ No newline at end of file +# Lotto +![Vorschaubild](img/Lotto_Vorschaubild.png) \ No newline at end of file diff --git a/img/Lotto_Vorschaubild.png b/img/Lotto_Vorschaubild.png new file mode 100644 index 0000000000000000000000000000000000000000..e07ab5b1593ea1505d7d1280746db9c1e084385b GIT binary patch literal 13151 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 Yaru9Gn4^upy-~a#s literal 0 HcmV?d00001 diff --git a/src/gfn/marc/Feld.java b/src/gfn/marc/Feld.java new file mode 100644 index 0000000..bc454e5 --- /dev/null +++ b/src/gfn/marc/Feld.java @@ -0,0 +1,85 @@ +package gfn.marc; + +import javax.swing.*; + +public class Feld { + private static int feldAnzahl = 0; + private int feldId; + private Rechteck rechteck; + private JLabel label = new JLabel(); + private boolean gesetzt; + private Kreuz kreuz; + private Kreis kreis; + + static { + + } + + // Konstruktor + public Feld(Rechteck rechteck) { + if (feldAnzahl == 49) { + Feld.feldAnzahl = 0; + } + this.rechteck = rechteck; + Feld.feldAnzahl++; + this.feldId = Feld.feldAnzahl; + + // Label Position und Größe des Rechtecks zuweisen + this.label.setBounds((this.rechteck.getPara1() - Spielfeld.KORREKTUR_X), (this.rechteck.getPara2() - + Spielfeld.KORREKTUR_Y), this.rechteck.getPara3(), this.rechteck.getPara4()); + this.label.setVisible(true); + + kreuz = new Kreuz((int) (rechteck.getPara1() + (rechteck.getPara3() * 0.25)), + ((int) (rechteck.getPara2() + (rechteck.getPara4() * 0.25))), + ((int) (rechteck.getPara1() + (rechteck.getPara3() * 0.75))), + ((int) (rechteck.getPara2() + (rechteck.getPara4() * 0.75)))); + + kreis = new Kreis((int) (rechteck.getPara1() + (0.1 * rechteck.getPara3())), + (int) (rechteck.getPara2() + (0.1 * rechteck.getPara4())), + ((int) (rechteck.getPara3() * 0.8)), + ((int) (rechteck.getPara4() * 0.8))); + + } + + public void setZeichen(Form form) { + if (form.getClass() == kreuz.getClass()) { + kreuz.setSichtbar(true); + } else { + kreis.setSichtbar(true); + } + gesetzt = true; + + } + + public JLabel getLabel() { + return label; + } + + public Rechteck getRechteck() { + return rechteck; + } + + public Kreuz getKreuz() { + return kreuz; + } + + public void setKreuz(Kreuz kreuz) { + this.kreuz = kreuz; + } + + public Kreis getKreis() { + return kreis; + } + + public void setKreis(Kreis kreis) { + this.kreis = kreis; + } + + public int getFeldId() { + return feldId; + } + + public boolean isGesetzt() { + return gesetzt; + } +} diff --git a/src/gfn/marc/Form.java b/src/gfn/marc/Form.java new file mode 100644 index 0000000..20833b3 --- /dev/null +++ b/src/gfn/marc/Form.java @@ -0,0 +1,64 @@ +package gfn.marc; + +import java.awt.*; + +public abstract class Form { + private int para1; + private int para2; + private int para3; + private int para4; + private boolean sichtbar; + + public Form() { + } + + public Form(int para1, int para2, int para3, int para4) { + this.para1 = para1; + this.para2 = para2; + this.para3 = para3; + this.para4 = para4; + } + + public abstract void paintMe(Graphics2D g); + + public int getPara1() { + return para1; + } + + public int getPara2() { + return para2; + } + + public int getPara3() { + return para3; + } + + public int getPara4() { + return para4; + } + + public boolean isSichtbar() { + return sichtbar; + } + + public void setPara1(int para1) { + this.para1 = para1; + } + + public void setPara2(int para2) { + this.para2 = para2; + } + + public void setPara3(int para3) { + this.para3 = para3; + } + + public void setPara4(int para4) { + this.para4 = para4; + } + + public void setSichtbar(boolean sichtbar) { + this.sichtbar = sichtbar; + } + +} diff --git a/src/gfn/marc/Kreis.java b/src/gfn/marc/Kreis.java new file mode 100644 index 0000000..30e131b --- /dev/null +++ b/src/gfn/marc/Kreis.java @@ -0,0 +1,22 @@ +package gfn.marc; + +import java.awt.*; + +public class Kreis extends Form { + + public Kreis() { + } + + public Kreis(int para1, int para2, int para3, int para4) { + super(para1, para2, para3, para4); + } + + @Override + public void paintMe(Graphics2D g) { + if (this.isSichtbar()) { + g.setColor(Color.red); + g.setStroke(new BasicStroke(6)); + g.drawOval(this.getPara1(), this.getPara2(), this.getPara3(), this.getPara4()); + } + } +} diff --git a/src/gfn/marc/Kreuz.java b/src/gfn/marc/Kreuz.java new file mode 100644 index 0000000..19227f5 --- /dev/null +++ b/src/gfn/marc/Kreuz.java @@ -0,0 +1,24 @@ +package gfn.marc; + +import java.awt.*; + +public class Kreuz extends Form { + + public Kreuz() { + } + + public Kreuz(int para1, int para2, int para3, int para4) { + super(para1, para2, para3, para4); + } + + @Override + public void paintMe(Graphics2D g) { + if (this.isSichtbar()) { + g.setColor(Color.blue); + g.setStroke(new BasicStroke(8)); + g.drawLine(this.getPara1(), this.getPara2(), this.getPara3(), this.getPara4()); + g.drawLine(this.getPara3(), this.getPara2(), this.getPara1(), this.getPara4()); + } + } + +} diff --git a/src/gfn/marc/Lotto.java b/src/gfn/marc/Lotto.java new file mode 100644 index 0000000..5ebafdf --- /dev/null +++ b/src/gfn/marc/Lotto.java @@ -0,0 +1,92 @@ +package gfn.marc; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.util.*; +import static gfn.marc.Spielfeld.KORREKTUR_X; +import static gfn.marc.Spielfeld.KORREKTUR_Y; + +public class Lotto extends JFrame { + + static Frame f; + static int fensterGroesse = 600; + static Spielfeld spielfeld; + static Spiel spiel; + + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + boolean eingabeKorrekt = false; + + try { + boolean nochEinSpiel = true; + while (nochEinSpiel) { + + f = new Lotto(); + f.setSize((fensterGroesse + KORREKTUR_X), (fensterGroesse + KORREKTUR_Y)); // Fenster Breite und Höhe + f.setLocationRelativeTo(null); + f.setLayout(null); + f.setResizable(false); + f.setTitle("Lotto"); // Fenster Titeltext + f.setVisible(true); // Fenster anzeigen + f.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); // sofortiges Programmende + } + }); + + spielfeld = new Spielfeld(f); + spiel = new Spiel(f, spielfeld); + nochEinSpiel = spiel.spielen(); + + // aufräumen + spielfeld.aufraeumen(); + spiel = null; + spielfeld = null; + Zug.setZugNummer(0); + f.setVisible(false); + f = null; + } + } catch (InterruptedException ie) { + System.err.println("Da ist was schief gelaufen!"); + } + System.exit(0); // sofortiges Programmende + + } + + public static Spielfeld getSpielfeld() { + return spielfeld; + } + + public static Frame getF() { + return f; + } + + public void paint(Graphics g) { + + Graphics2D g2 = (Graphics2D) g; + + if (spielfeld != null) { + spielfeld.zeichneSpielfeld(g2); + spielfeld.setSpielfeldExistiert(true); + } + + if (spielfeld != null) { + for (Feld feld : spielfeld.getFelder()) { + feld.getKreuz().paintMe(g2); + feld.getKreis().paintMe(g2); + } + } + + if (spielfeld != null) { + for (Feld feld : spielfeld.getFelder()) { + feld.getRechteck().faerbeGruen(g2); + feld.getKreuz().paintMe(g2); + feld.getKreis().paintMe(g2); + } + } + } +} diff --git a/src/gfn/marc/Lottozahlen.java b/src/gfn/marc/Lottozahlen.java deleted file mode 100644 index 6294e49..0000000 --- a/src/gfn/marc/Lottozahlen.java +++ /dev/null @@ -1,83 +0,0 @@ -package gfn.marc; - -import java.util.*; - -public class Lottozahlen { - - public static void main(String[] args) { - - Scanner scanner = new Scanner(System.in); - boolean eingabeKorrekt = false; - - // Lottoschein ausfüllen - HashSet lottoschein = new HashSet<>(6); - while (!eingabeKorrekt) { - System.out.println("Bitte geben Sie sechs, durch Kommata getrennte, Lottozahlen (1 - 49) ein. " + - "(Beispiel: \"6,12,29,34,40,46\")"); - String eingabe = scanner.nextLine(); - - // Eingabe überprüfen - if (eingabe.matches("(\\s*(([1-4][0-9])|[1-9])\\s*,?){6}")) { - - // Eingabe in ArrayList übertragen - String[] zahlen = eingabe.split("[,]"); - for (String zahl : zahlen) { - lottoschein.add(Integer.parseInt(zahl.trim())); - } - - // Prüfung: doppelte Zahlen? - if (lottoschein.size() == 6) { - eingabeKorrekt = true; - } else { - System.err.println("Doppelte Zahlen!"); - } - - // Prüfung: Zahlen ungültig? - } else { - System.err.println("Ungültige Zahlen!"); - } - } - - // Lottozahlen ziehen - HashSet lottozahlenSet = new HashSet<>(6); - while (lottozahlenSet.size() < 6) { - lottozahlenSet.add((int) (Math.random() * 49) + 1); - } - ArrayList lottozahlen = new ArrayList<>(lottozahlenSet); - - // Lottozahlen ausgeben - System.out.println(); - System.out.print("Lottozahlen: "); - Collections.sort(lottozahlen); - for (int i = 0; i < lottozahlen.size(); i++) { - if (i < lottozahlen.size() - 1) { - System.out.print(lottozahlen.get(i) + ", "); - } else { - System.out.print(lottozahlen.get(i)); - } - } - System.out.println("\n"); - - // Lottoschein auswerten - ArrayList richtige = new ArrayList<>(); - for (int zahl : lottoschein) { - if (lottozahlen.contains(zahl)) { - richtige.add(zahl); - } - } - - // Ergebnis ausgeben - Collections.sort(richtige); - System.out.println(richtige.isEmpty() ? "Sie haben leider keine richtige Zahl!" : - "Sie haben " + richtige.size() + " Richtige: "); - if (!richtige.isEmpty()) { - for (int i = 0; i < richtige.size(); i++) { - if (i < richtige.size() - 1) { - System.out.print(richtige.get(i) + ", "); - } else { - System.out.print(richtige.get(i)); - } - } - } - } -} diff --git a/src/gfn/marc/Rechteck.java b/src/gfn/marc/Rechteck.java new file mode 100644 index 0000000..0601ccc --- /dev/null +++ b/src/gfn/marc/Rechteck.java @@ -0,0 +1,44 @@ +package gfn.marc; + +import java.awt.*; + +public class Rechteck extends Form { + private boolean gewinnerFeld = false; + + public Rechteck(int para1, int para2, int para3, int para4) { + super(para1, para2, para3, para4); + } + + @Override + public void paintMe(Graphics2D g) { + if (this.isSichtbar()) { + g.setColor(Color.black); + g.setStroke(new BasicStroke(5)); + g.drawRect(this.getPara1(), this.getPara2(), this.getPara3(), this.getPara4()); + } + } + + public void faerbeGruen(Graphics2D g) { + if (this.isGewinnerFeld()) { + g.setColor(Color.green); + g.fillRect(this.getPara1(), this.getPara2(), this.getPara3(), this.getPara4()); + g.setColor(Color.black); + g.setStroke(new BasicStroke(5)); + g.drawRect(this.getPara1(), this.getPara2(), this.getPara3(), this.getPara4()); + } + } + + public void paintId(Graphics g, int i) { + String s = Integer.toString(i); + g.drawString(s, ((int) (this.getPara1() + (0.5 * this.getPara3()))), + ((int) (this.getPara2() + (0.5 * this.getPara4())))); + } + + public boolean isGewinnerFeld() { + return gewinnerFeld; + } + + public void setGewinnerFeld(boolean gewinnerFeld) { + this.gewinnerFeld = gewinnerFeld; + } +} diff --git a/src/gfn/marc/Spiel.java b/src/gfn/marc/Spiel.java new file mode 100644 index 0000000..26d9c0c --- /dev/null +++ b/src/gfn/marc/Spiel.java @@ -0,0 +1,95 @@ +package gfn.marc; + +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; +import java.util.HashSet; + +public class Spiel { + + private Frame f; + private Spielfeld spielfeld; + private HashSet lottoschein = new HashSet<>(6); + + Spiel(Frame f, Spielfeld spielfeld) throws InterruptedException { + + this.f = f; + + // Neues Spielfeld anlegen + this.spielfeld = spielfeld; + + } + + public boolean spielen() { + + // Zahlen tippen + try { + Zug zug = new Zug(this); + while (Zug.getZugNummer() < 6) { + Zug.macheZug(); + f.setTitle(Zug.getZugNummer() + "/6 Feldern getippt"); + } + f.repaint(); + Thread.sleep(500); + + // Lottozahlen ziehen + HashSet lottozahlenSet = new HashSet<>(6); + while (lottozahlenSet.size() < 6) { + lottozahlenSet.add((int) (Math.random() * 49) + 1); + } + ArrayList lottozahlen = new ArrayList<>(lottozahlenSet); + + // gezogene Zahlen anzeigen + Feld[] felder = spielfeld.getFelder(); + for (int zahl : lottozahlen) { + for (int i = 0; i < felder.length; i++) { + if (zahl == felder[i].getFeldId()) { + felder[i].getRechteck().setGewinnerFeld(true); + f.repaint(); + break; + } + } + } + + // Lottoschein auswerten + ArrayList richtige = new ArrayList<>(); + for (int zahl : lottoschein) { + if (lottozahlen.contains(zahl)) { + richtige.add(zahl); + } + } + + // richtige Zahlen einkreisen + for (int zahl : richtige) { + for (int i = 0; i < felder.length; i++) { + if (zahl == felder[i].getFeldId()) { + felder[i].setZeichen(new Kreis()); + } + } + } + + // Noch ein Spiel? + if (richtige.size() != 0) { + int auswahl = JOptionPane.showOptionDialog(f, "Glückwunsch! Sie haben " + richtige.size() + + " Richtige!\nNoch ein Spiel?", "Lotto", JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE, null, null, null); + return auswahl != JOptionPane.NO_OPTION; + } else { + int auswahl = JOptionPane.showOptionDialog(f, "Sie haben leider keine Zahl richtig getippt." + + "\nNoch ein Spiel?", "Lotto", JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE, null, null, null); + return auswahl != JOptionPane.NO_OPTION; + } + + + } catch ( + InterruptedException ie) { + System.err.println("Da ist was schief gelaufen!"); + } + return false; + } + + public void setNumberToLottoschein(int nummer) { + this.lottoschein.add(nummer); + } +} diff --git a/src/gfn/marc/Spielfeld.java b/src/gfn/marc/Spielfeld.java new file mode 100644 index 0000000..9c64e28 --- /dev/null +++ b/src/gfn/marc/Spielfeld.java @@ -0,0 +1,70 @@ +package gfn.marc; + +import java.awt.*; + +public class Spielfeld { + + final static int KORREKTUR_X = 3; // Korrektur der Spielfeldposition auf X Achse + final static int KORREKTUR_Y = 30; // Korrektur der Spielfeldposition auf Y Achse + + private static int fensterGroesse = 600; + private int quadrant = fensterGroesse / 7; + private Frame f; + private Feld[] felder; + private boolean spielfeldExistiert; + + // Unterteilung des Spielfelds in rechteckige Felder + public Spielfeld(Frame f) { + Feld[] felder = new Feld[49]; + this.f = f; + + int k = 0; + for (int i = 0; i < 7; i++) { + for (int j = 0; j < 7; j++) { + felder[k] = new Feld(new Rechteck(((this.quadrant * j) + KORREKTUR_X), (KORREKTUR_Y + (this.quadrant * i)), + this.quadrant, this.quadrant)); + k++; + } + } + + this.felder = felder; + } + + // zeichne Spielfeld + public void zeichneSpielfeld(Graphics2D g) { + + for (Feld feld : this.felder) { + feld.getRechteck().setSichtbar(true); + feld.getRechteck().paintMe(g); + // Zahlen auf Felder einblenden, wenn Debug-Mode aktiviert ist + this.f.add(feld.getLabel()); + feld.getRechteck().paintId(g, feld.getFeldId()); + + } + } + + // Spielfeld äufräumen + public void aufraeumen() { + + felder = null; + this.f = null; + + } + + public Feld[] getFelder() { + return felder; + } + + public Frame getF() { + return f; + } + + public boolean isSpielfeldExistiert() { + return spielfeldExistiert; + } + + public void setSpielfeldExistiert(boolean spielfeldExistiert) { + this.spielfeldExistiert = spielfeldExistiert; + } +} + diff --git a/src/gfn/marc/Zug.java b/src/gfn/marc/Zug.java new file mode 100644 index 0000000..4543fa6 --- /dev/null +++ b/src/gfn/marc/Zug.java @@ -0,0 +1,132 @@ +package gfn.marc; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public class Zug { + + private static Frame f; + private static Spielfeld spielfeld; + static Spiel spiel; + private static int zugNummer = 0; + private static boolean zugLaeuft; + private static CustomMouseListener[] cmls = new CustomMouseListener[49]; + + public Zug(Spiel spiel) { + Zug.spiel = spiel; + Zug.spielfeld = Lotto.getSpielfeld(); + Zug.f = Lotto.getF(); + createMouseListeners(); + } + + // Zuganzahl hochzählen und Titelleiste setzen + public static void macheZug() { + if (zugNummer == 9) { + Zug.zugNummer = 0; + } + Zug.zugNummer++; + Zug.setZugLaeuft(true); + + + // Mouselistener auf Felder setzen, die noch nicht gesetzt wurden + for (int i = 0; i < spielfeld.getFelder().length; i++) { + if (!spielfeld.getFelder()[i].isGesetzt()) { + spielfeld.getFelder()[i].getLabel().addMouseListener(cmls[i]); + } + } + + // Auf setzen eines Feldes warten + while (Zug.isZugLaeuft()) { + try { + Thread.sleep(200); + } catch (InterruptedException ie) { + break; + } + } + + // MouseListener von allen Feldern entfernen + for (int i = 0; i < spielfeld.getFelder().length; i++) { + spielfeld.getFelder()[i].getLabel().removeMouseListener(cmls[i]); + } + + } + + public static void createMouseListeners() { + for (int i = 0; i < spielfeld.getFelder().length; i++) { + cmls[i] = new CustomMouseListener(f, spielfeld.getFelder()[i]); + } + } + + public static int getZugNummer() { + return zugNummer; + } + + public static boolean isZugLaeuft() { + return zugLaeuft; + } + + public static void setZugLaeuft(boolean zugLaeuft) { + Zug.zugLaeuft = zugLaeuft; + } + + public static void setF(Frame f) { + Zug.f = f; + } + + public static void setSpielfeld(Spielfeld spielfeld) { + Zug.spielfeld = spielfeld; + } + + public static void setZugNummer(int zugNummer) { + Zug.zugNummer = zugNummer; + } + + public static void setCmls(CustomMouseListener[] cmls) { + Zug.cmls = cmls; + } +} + + +class CustomMouseListener implements MouseListener { + + private Frame f; + private Feld feld; + + public CustomMouseListener(Frame f, Feld feld) { + this.f = f; + this.feld = feld; + } + + // Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen + @Override + public void mouseClicked(MouseEvent mouseEvent) { + this.feld.setZeichen(new Kreuz()); + f.repaint(); + Zug.spiel.setNumberToLottoschein(this.feld.getFeldId()); + Zug.setZugLaeuft(false); + } + + // notwendige Implementierungen ohne weitere Funktion + @Override + public void mousePressed(MouseEvent mouseEvent) { + + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + + } +} + +