commit a7c45a8437115e2568991b007d1eca2e770b0057 Author: n.huettemann Date: Thu Nov 19 12:20:03 2020 +0100 added velamentum Java - Erste lauffähige Version diff --git a/MyVTest.class b/MyVTest.class new file mode 100644 index 0000000..d197ae5 Binary files /dev/null and b/MyVTest.class differ diff --git a/MyVTest.java b/MyVTest.java new file mode 100644 index 0000000..bd6e058 --- /dev/null +++ b/MyVTest.java @@ -0,0 +1,19 @@ +import velamentum.*; +import velamentum.werkzeuge.*; + +public class MyVTest { + + public static void main(String[] args) { + // TODO Auto-generated method stub +// EingabeDialog e = new EingabeDialog("Hi", "Test"); +// e.zeige(); +// Zufallsgenerator z = new Zufallsgenerator(1, 6); +// System.out.println(z.nenneErgebnis()); +// EingabeDialog_alt edalt = new EingabeDialog_alt("yo", "yoyoyo"); +// edalt.zeige(); + EingabeDialog ed = new EingabeDialog("hi", "nur nummern bitte", true); + ed.zeige(); + + } + +} diff --git a/SchereSteinPapier.class b/SchereSteinPapier.class new file mode 100644 index 0000000..c80a213 Binary files /dev/null and b/SchereSteinPapier.class differ diff --git a/SchereSteinPapier.java b/SchereSteinPapier.java new file mode 100644 index 0000000..fa592cf --- /dev/null +++ b/SchereSteinPapier.java @@ -0,0 +1,64 @@ +import velamentum.Dialog; +import velamentum.EntscheidungsDialog; +import velamentum.werkzeuge.Zufallsgenerator; + +public class SchereSteinPapier { + + public static void main(String[] args) { + + Dialog dialog = new Dialog("Schere, Stein, Papier", "Willkommen zum Spiel!"); + dialog.zeige(); + + EntscheidungsDialog eDialog = new EntscheidungsDialog("Schere, Stein, Papier", "Bitte wählen Sie ihren Gegenstand"); + eDialog.setzeText1("Schere"); + eDialog.setzeText2("Stein"); + eDialog.setzeText3("Papier"); + eDialog.setzeDreiTasten(true); + + eDialog.zeige(); + System.out.println(eDialog.nenneErgebnis()); + + Zufallsgenerator zufall = new Zufallsgenerator(1, 3); + System.out.println(zufall.nenneErgebnis()); + + if(zufall.nenneErgebnis() == 1) { + dialog.zeigeNachricht("Ich habe Schere gewählt."); + if(eDialog.nenneErgebnis() == 1) { + dialog.zeigeNachricht("Unentschieden!"); + } + else if(eDialog.nenneErgebnis() == 2) { + dialog.zeigeNachricht("Du hast gewonnen!"); + } + else { + dialog.zeigeNachricht("Ich habe gewonnen!"); + } + } + else if(zufall.nenneErgebnis() == 2) { + dialog.zeigeNachricht("Ich habe Stein gewählt."); + if(eDialog.nenneErgebnis() == 2) { + dialog.zeigeNachricht("Unentschieden!"); + } + else if(eDialog.nenneErgebnis() == 1) { + dialog.zeigeNachricht("Ich habe gewonnen!"); + } + else { + dialog.zeigeNachricht("Du hast gewonnen!"); + } + } + else{ + dialog.zeigeNachricht("Ich habe Papier gewählt."); + if(eDialog.nenneErgebnis() == 3) { + dialog.zeigeNachricht("Unentschieden!"); + } + else if(eDialog.nenneErgebnis() == 2) { + dialog.zeigeNachricht("Ich habe gewonnen!"); + } + else { + dialog.zeigeNachricht("Du hast gewonnen!"); + } + } + + + } + +} diff --git a/Zahlenraten.class b/Zahlenraten.class new file mode 100644 index 0000000..6ded5ea Binary files /dev/null and b/Zahlenraten.class differ 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.class b/velamentum/Dialog.class new file mode 100644 index 0000000..9e705d9 Binary files /dev/null and b/velamentum/Dialog.class differ 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$1.class b/velamentum/EingabeDialog$1.class new file mode 100644 index 0000000..0cd648e Binary files /dev/null and b/velamentum/EingabeDialog$1.class differ diff --git a/velamentum/EingabeDialog.class b/velamentum/EingabeDialog.class new file mode 100644 index 0000000..15f3aaf Binary files /dev/null and b/velamentum/EingabeDialog.class differ 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.class b/velamentum/EingabeDialog_alt.class new file mode 100644 index 0000000..f83fb60 Binary files /dev/null and b/velamentum/EingabeDialog_alt.class differ 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.class b/velamentum/EntscheidungsDialog.class new file mode 100644 index 0000000..0b718a9 Binary files /dev/null and b/velamentum/EntscheidungsDialog.class differ 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.class b/velamentum/PasswortDialog.class new file mode 100644 index 0000000..e75c192 Binary files /dev/null and b/velamentum/PasswortDialog.class differ 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.class b/velamentum/werkzeuge/Zufallsgenerator.class new file mode 100644 index 0000000..9bdb4d1 Binary files /dev/null and b/velamentum/werkzeuge/Zufallsgenerator.class differ 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; + } +}