added velamentumJAVA to master-brach manually (teste noch rum)

This commit is contained in:
Nils Hüttemann 2020-11-19 13:16:56 +01:00
parent 396ea98d4b
commit 1645d93e22
7 changed files with 421 additions and 0 deletions

36
Zahlenraten.java Normal file
View File

@ -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.");
}
}

52
velamentum/Dialog.java Normal file
View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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!");
}
}
}

View File

@ -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);
}
}
}

View File

@ -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;
}
}