From 1645d93e22088c4ec3471ca4696873a87b8de097 Mon Sep 17 00:00:00 2001 From: "n.huettemann" Date: Thu, 19 Nov 2020 13:16:56 +0100 Subject: [PATCH] added velamentumJAVA to master-brach manually (teste noch rum) --- Zahlenraten.java | 36 ++++++++ velamentum/Dialog.java | 52 +++++++++++ velamentum/EingabeDialog.java | 101 +++++++++++++++++++++ velamentum/EingabeDialog_alt.java | 65 +++++++++++++ velamentum/EntscheidungsDialog.java | 81 +++++++++++++++++ velamentum/PasswortDialog.java | 34 +++++++ velamentum/werkzeuge/Zufallsgenerator.java | 52 +++++++++++ 7 files changed, 421 insertions(+) create mode 100644 Zahlenraten.java create mode 100644 velamentum/Dialog.java create mode 100644 velamentum/EingabeDialog.java create mode 100644 velamentum/EingabeDialog_alt.java create mode 100644 velamentum/EntscheidungsDialog.java create mode 100644 velamentum/PasswortDialog.java create mode 100644 velamentum/werkzeuge/Zufallsgenerator.java diff --git a/Zahlenraten.java b/Zahlenraten.java new file mode 100644 index 0000000..ad9ee5b --- /dev/null +++ b/Zahlenraten.java @@ -0,0 +1,36 @@ +import velamentum.Dialog; +import velamentum.EingabeDialog; +import velamentum.werkzeuge.Zufallsgenerator; + +public class Zahlenraten { + + public static void main(String[] args) { + Zufallsgenerator zufall = new Zufallsgenerator(1, 1000); + + Dialog dialog = new Dialog("Zahlenraten", "Willkommen zum Spiel!"); + dialog.zeige(); + + dialog.zeigeNachricht("Ich habe eine Zahl zwischen 1 und 1000 gewählt. \nRaten Sie welche es ist!"); + + EingabeDialog eDialog = new EingabeDialog("Zahlenraten", "Bitte geben Sie eine Zahl zwischen 1 und 1000 ein:", true); + //eDialog.setzeErgebnis("0"); + + int versuche = 0; + + while(eDialog.nenneErgebnisAlsZahl() != zufall.nenneErgebnis()) { + versuche++; + + eDialog.zeige(); + + if(eDialog.nenneErgebnisAlsZahl() > zufall.nenneErgebnis()) { + dialog.zeigeNachricht("Ihre Zahl war zu groß!"); + }else if(eDialog.nenneErgebnisAlsZahl() < zufall.nenneErgebnis()) { + dialog.zeigeNachricht("Ihre Zahl war zu klein!"); + } + } + + dialog.zeigeNachricht("Herzlichen Glückwunsch! Sie haben die Zahl nach " + versuche + " Versuchen erraten."); + + } + +} diff --git a/velamentum/Dialog.java b/velamentum/Dialog.java new file mode 100644 index 0000000..b15ccc5 --- /dev/null +++ b/velamentum/Dialog.java @@ -0,0 +1,52 @@ +package velamentum; + +import javax.swing.*; + + +public class Dialog { + /** + * Die Klasse Dialog stellt einen einfachen Dialog zur Verfuegung, der eine + * Nachricht anzeigen kann und nach Bestätigung durch den Benutzer wieder + * verschwindet. + */ + + private String titel="Titel"; + private String nachricht="Keine Nachricht eingefügt"; + + public Dialog(String pTitel, String pNachricht) { + /** + * Kontruktor. Initialisiert den Dialog. + * + * @param pTitel (String): Setzt den Titel des Dialogs + */ + this.titel = pTitel; + this.nachricht = pNachricht; + } + + public void setzeNachricht(String pNachricht) { + this.nachricht = pNachricht; + } + + public String nenneNachricht() { + return this.nachricht; + } + + public void setzeTitel(String pTitel) { + this.titel = pTitel; + } + + public String nenneTitel() { + return this.titel; + } + + public void zeigeNachricht(String pNachricht) { + this.nachricht = pNachricht; + this.zeige(); + } + + public void zeige() { + JFrame desk = new JFrame(); + JOptionPane.showMessageDialog(desk, this.nenneNachricht(), this.nenneTitel(), JOptionPane.PLAIN_MESSAGE); + + } +} diff --git a/velamentum/EingabeDialog.java b/velamentum/EingabeDialog.java new file mode 100644 index 0000000..6e947c0 --- /dev/null +++ b/velamentum/EingabeDialog.java @@ -0,0 +1,101 @@ +package velamentum; + +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.text.AbstractDocument; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.DocumentFilter; + + +public class EingabeDialog extends Dialog{ + + private boolean nurZahlen = false; + private boolean wertAnzeigen = false; + private String ergebnis; + + public EingabeDialog(String pTitel, String pNachricht) { + super(pTitel, pNachricht); + // TODO Auto-generated constructor stub + } + + public EingabeDialog(String pTitel, String pNachricht, boolean pNurZahlen) { + super(pTitel, pNachricht); + this.nurZahlen = pNurZahlen; + } + + public String nenneErgebnis() { + return this.ergebnis; + } + + public int nenneErgebnisAlsZahl() { + if(this.nenneErgebnis()==null) { + return 0; + } + try { + return Integer.parseInt(this.ergebnis); + } catch (Exception e) { + System.err.println("Error: Ergebnis ist keine ganze Zahl"); + //return -35505; + throw e; + } + + } + + public boolean nenneNurZahlen() { + return this.nurZahlen; + } + + public boolean nenneWertAnzeigen() { + return this.wertAnzeigen; + } + + public void setzeErgebnis(String pErgebnis) { + this.ergebnis = pErgebnis; + } + + public void setzeNurZahlen(boolean pNurZahlen) { + this.nurZahlen = pNurZahlen; + } + + public void setzeWertAnzeigen(boolean pWertAnzeigen) { + this.nurZahlen = pWertAnzeigen; + } + + public void zeige() { + JFrame desk = new JFrame(); + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JLabel label = new JLabel(this.nenneNachricht()); + JTextField tf = new JTextField(); + if(this.nurZahlen) { + ((AbstractDocument) tf.getDocument()).setDocumentFilter(new DocumentFilter() { + @Override + public void replace(FilterBypass fb, int offset, int length, String str, AttributeSet attr) + throws BadLocationException { + if (!str.matches("[0-9]")) { + super.replace(fb, offset, fb.getDocument().getLength(), "", attr); + return; + } else { + super.replace(fb, offset, length, str, attr); + } + } + }); + } + panel.add(label); + panel.add(tf); + + int n = JOptionPane.showConfirmDialog(desk, panel, this.nenneTitel(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(n == JOptionPane.OK_OPTION) { + this.ergebnis = tf.getText(); + } + else { + System.exit(0); + } + + } +} diff --git a/velamentum/EingabeDialog_alt.java b/velamentum/EingabeDialog_alt.java new file mode 100644 index 0000000..1cc8d99 --- /dev/null +++ b/velamentum/EingabeDialog_alt.java @@ -0,0 +1,65 @@ +package velamentum; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + + +public class EingabeDialog_alt extends Dialog{ + + private boolean nurZahlen = false; + private boolean wertAnzeigen = false; + private String ergebnis; + + public EingabeDialog_alt(String pTitel, String pNachricht) { + super(pTitel, pNachricht); + // TODO Auto-generated constructor stub + } + + public EingabeDialog_alt(String pTitel, String pNachricht, boolean pNurZahlen) { + super(pTitel, pNachricht); + this.nurZahlen = pNurZahlen; + } + + public String nenneErgebnis() { + return this.ergebnis; + } + + public int nenneErgebnisAlsZahl() { + if(this.nenneErgebnis()==null) { + return 0; + } + try { + return Integer.parseInt(this.ergebnis); + } catch (Exception e) { + System.err.println("Error: Ergebnis ist keine ganze Zahl"); + //return -35505; + throw e; + } + + } + + public boolean nenneNurZahlen() { + return this.nurZahlen; + } + + public boolean nenneWertAnzeigen() { + return this.wertAnzeigen; + } + + public void setzeErgebnis(String pErgebnis) { + this.ergebnis = pErgebnis; + } + + public void setzeNurZahlen(boolean pNurZahlen) { + this.nurZahlen = pNurZahlen; + } + + public void setzeWertAnzeigen(boolean pWertAnzeigen) { + this.nurZahlen = pWertAnzeigen; + } + + public void zeige() { + JFrame desk = new JFrame(); + this.ergebnis = (String)JOptionPane.showInputDialog(desk, this.nenneNachricht(), this.nenneTitel(), JOptionPane.PLAIN_MESSAGE, null, null, null); + } +} diff --git a/velamentum/EntscheidungsDialog.java b/velamentum/EntscheidungsDialog.java new file mode 100644 index 0000000..20b8bc5 --- /dev/null +++ b/velamentum/EntscheidungsDialog.java @@ -0,0 +1,81 @@ +package velamentum; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +public class EntscheidungsDialog extends Dialog { + + private int ergebnis = 0; + private String text1 = "Ja"; + private String text2 = "Nein"; + private String text3 = "Vielleicht"; + private boolean dreiTasten = false; + + + public EntscheidungsDialog(String pTitel, String pNachricht) { + super(pTitel, pNachricht); + // TODO Auto-generated constructor stub + } + + public void setzeText1(String pText) { + this.text1 = pText; + } + + public void setzeText2(String pText) { + this.text2 = pText; + } + + public void setzeText3(String pText) { + this.text3 = pText; + } + + public void setzeErgebnisA() { + this.ergebnis = 1; + } + + public void setzeErgebnisB() { + this.ergebnis = 2; + } + + public void setzeErgebnisC() { + this.ergebnis = 3; + } + + public void setzeDreiTasten(boolean pDreiTasten) { + this.dreiTasten = pDreiTasten; + } + + public int nenneErgebnis() { + return this.ergebnis; + } + + public String nenneText1() { + return this.text1; + } + + public String nenneText2() { + return this.text2; + } + + public String nenneText3() { + return this.text3; + } + + public boolean nenneDreiTasten() { + return this.dreiTasten; + } + + public void zeige() { + JFrame desk = new JFrame(); + if(this.dreiTasten) { + Object[] options = {this.text1, this.text2, this.text3}; + this.ergebnis = JOptionPane.showOptionDialog(desk, this.nenneNachricht(), this.nenneTitel(), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0])+1; + }else if(!this.dreiTasten) { + Object[] options = {this.text1, this.text2}; + this.ergebnis = JOptionPane.showOptionDialog(desk, this.nenneNachricht(), this.nenneTitel(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0])+1; + }else { + System.out.println("Bei zeige() hat die Fallunterscheidung nicht geklappt!"); + } + } + +} diff --git a/velamentum/PasswortDialog.java b/velamentum/PasswortDialog.java new file mode 100644 index 0000000..8d75bb4 --- /dev/null +++ b/velamentum/PasswortDialog.java @@ -0,0 +1,34 @@ +package velamentum; + +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; + +public class PasswortDialog extends EingabeDialog_alt{ + + public PasswortDialog(String pTitel, String pNachricht) { + super(pTitel, pNachricht); + // TODO Auto-generated constructor stub + } + + public void zeige() { + + JFrame desk = new JFrame(); + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JLabel label = new JLabel(this.nenneNachricht()); + JPasswordField pf = new JPasswordField(); + panel.add(label); + panel.add(pf); + int okCxl = JOptionPane.showConfirmDialog(desk, panel, this.nenneTitel(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + + if (okCxl == JOptionPane.OK_OPTION) { + String password = new String(pf.getPassword()); + this.setzeErgebnis(password); + } + } + +} diff --git a/velamentum/werkzeuge/Zufallsgenerator.java b/velamentum/werkzeuge/Zufallsgenerator.java new file mode 100644 index 0000000..9c3b49b --- /dev/null +++ b/velamentum/werkzeuge/Zufallsgenerator.java @@ -0,0 +1,52 @@ +package velamentum.werkzeuge; + +import java.util.Random; + +public class Zufallsgenerator { + private int min; + private int max; + private int ergebnis; + + public Zufallsgenerator(int pMin, int pMax) { + this.min = pMin; + this.max = pMax; + this.ergebnis = getRandomNumberInRange(pMin, pMax); + } + + + public int nenneMin() { + return min; + } + + public void setzeMin(int min) { + this.min = min; + } + + public int nenneMax() { + return max; + } + + public void setzeMax(int max) { + this.max = max; + } + + public int nenneErgebnis() { + return ergebnis; + } + + public void generiereErgebnis() { + this.ergebnis = getRandomNumberInRange(nenneMin(), nenneMax()); + } + + + + private static int getRandomNumberInRange(int pMin, int pMax) { + + if (pMin >= pMax) { + throw new IllegalArgumentException("max must be greater than min"); + } + + Random r = new Random(); + return r.nextInt((pMax - pMin) + 1) + pMin; + } +}