From 65935fb2cd2d898f07592b84c55a0bb6b06cf4df Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Sat, 10 Oct 2020 21:42:43 +0200
Subject: [PATCH] Add base classes for exercise

---
 src/beobachter/SchreckwertBeobachter.java  | 12 +++
 src/gebaeude/Gebaeude.java                 |  7 ++
 src/gebaeude/Hoehle.java                   |  9 +++
 src/gebaeude/Schloss.java                  |  9 +++
 src/gegenstaende/Clownsnase.java           | 11 +++
 src/gegenstaende/Frankensteinschraube.java | 10 +++
 src/gegenstaende/Gegenstand.java           | 14 ++++
 src/gegenstaende/Hexenmaske.java           | 10 +++
 src/geister/Geist.java                     |  6 ++
 src/geister/GeistTyp.java                  |  6 ++
 src/gelaende/Gebirge.java                  |  8 ++
 src/gelaende/Gelaende.java                 |  6 ++
 src/gelaende/Sumpfgebiet.java              |  8 ++
 src/monster/Drache.java                    | 15 ++++
 src/monster/Kobold.java                    | 13 ++++
 src/monster/Kruemelmonster.java            | 13 ++++
 src/monster/Monster.java                   | 45 +++++++++++
 src/monster/TestDrive.java                 | 91 ++++++++++++++++++++++
 src/monster/monster_ausgabe.txt            | 52 +++++++++++++
 src/spielgenerator/SpielTyp.java           |  6 ++
 src/spielgenerator/Spielgenerator.java     | 13 ++++
 src/verhalten/Verhalten.java               |  5 ++
 22 files changed, 369 insertions(+)
 create mode 100644 src/beobachter/SchreckwertBeobachter.java
 create mode 100644 src/gebaeude/Gebaeude.java
 create mode 100644 src/gebaeude/Hoehle.java
 create mode 100644 src/gebaeude/Schloss.java
 create mode 100644 src/gegenstaende/Clownsnase.java
 create mode 100644 src/gegenstaende/Frankensteinschraube.java
 create mode 100644 src/gegenstaende/Gegenstand.java
 create mode 100644 src/gegenstaende/Hexenmaske.java
 create mode 100644 src/geister/Geist.java
 create mode 100644 src/geister/GeistTyp.java
 create mode 100644 src/gelaende/Gebirge.java
 create mode 100644 src/gelaende/Gelaende.java
 create mode 100644 src/gelaende/Sumpfgebiet.java
 create mode 100644 src/monster/Drache.java
 create mode 100644 src/monster/Kobold.java
 create mode 100644 src/monster/Kruemelmonster.java
 create mode 100644 src/monster/Monster.java
 create mode 100644 src/monster/TestDrive.java
 create mode 100644 src/monster/monster_ausgabe.txt
 create mode 100644 src/spielgenerator/SpielTyp.java
 create mode 100644 src/spielgenerator/Spielgenerator.java
 create mode 100644 src/verhalten/Verhalten.java

diff --git a/src/beobachter/SchreckwertBeobachter.java b/src/beobachter/SchreckwertBeobachter.java
new file mode 100644
index 0000000..0597b85
--- /dev/null
+++ b/src/beobachter/SchreckwertBeobachter.java
@@ -0,0 +1,12 @@
+package beobachter;
+
+import java.util.Observable;
+import java.util.Observer;
+
+public class SchreckwertBeobachter implements Observer {
+
+	@Override
+	public void update(Observable observable, Object data) {
+	}
+
+}
diff --git a/src/gebaeude/Gebaeude.java b/src/gebaeude/Gebaeude.java
new file mode 100644
index 0000000..4ea9a27
--- /dev/null
+++ b/src/gebaeude/Gebaeude.java
@@ -0,0 +1,7 @@
+package gebaeude;
+
+public interface Gebaeude {
+	
+	public void darstellen();
+
+}
diff --git a/src/gebaeude/Hoehle.java b/src/gebaeude/Hoehle.java
new file mode 100644
index 0000000..b609f09
--- /dev/null
+++ b/src/gebaeude/Hoehle.java
@@ -0,0 +1,9 @@
+package gebaeude;
+
+public class Hoehle implements Gebaeude {
+	
+	public void darstellen() {
+		System.out.println("Eine H�hle");
+	}
+	
+}
diff --git a/src/gebaeude/Schloss.java b/src/gebaeude/Schloss.java
new file mode 100644
index 0000000..ba1c522
--- /dev/null
+++ b/src/gebaeude/Schloss.java
@@ -0,0 +1,9 @@
+package gebaeude;
+
+public class Schloss implements Gebaeude {
+
+	public void darstellen() {
+		System.out.println("Ein Schloss");
+	};
+	
+}
diff --git a/src/gegenstaende/Clownsnase.java b/src/gegenstaende/Clownsnase.java
new file mode 100644
index 0000000..acd81a8
--- /dev/null
+++ b/src/gegenstaende/Clownsnase.java
@@ -0,0 +1,11 @@
+package gegenstaende;
+
+public class Clownsnase extends Gegenstand {
+
+	public Clownsnase() {
+		super();
+		schreckwert = -3;
+		beschreibung = "Clownsnase";
+	}
+
+}
diff --git a/src/gegenstaende/Frankensteinschraube.java b/src/gegenstaende/Frankensteinschraube.java
new file mode 100644
index 0000000..1d748b9
--- /dev/null
+++ b/src/gegenstaende/Frankensteinschraube.java
@@ -0,0 +1,10 @@
+package gegenstaende;
+
+public class Frankensteinschraube extends Gegenstand {
+
+	public Frankensteinschraube() {
+		super();
+		schreckwert = 1;
+		beschreibung = "Frankenstein-Schraube";
+	}
+}
diff --git a/src/gegenstaende/Gegenstand.java b/src/gegenstaende/Gegenstand.java
new file mode 100644
index 0000000..3af2b36
--- /dev/null
+++ b/src/gegenstaende/Gegenstand.java
@@ -0,0 +1,14 @@
+package gegenstaende;
+
+public abstract class Gegenstand {
+	protected int schreckwert;
+	protected String beschreibung;
+	
+	public int getSchreckwert() {
+		return schreckwert;
+	}
+	
+	public String getBeschreibung() {
+		return beschreibung;
+	}
+}
diff --git a/src/gegenstaende/Hexenmaske.java b/src/gegenstaende/Hexenmaske.java
new file mode 100644
index 0000000..06820ee
--- /dev/null
+++ b/src/gegenstaende/Hexenmaske.java
@@ -0,0 +1,10 @@
+package gegenstaende;
+
+public class Hexenmaske extends Gegenstand {
+
+	public Hexenmaske() {
+		super();
+		schreckwert = 2;
+		beschreibung = "Hexenmaske";
+	}
+}
diff --git a/src/geister/Geist.java b/src/geister/Geist.java
new file mode 100644
index 0000000..8fdb507
--- /dev/null
+++ b/src/geister/Geist.java
@@ -0,0 +1,6 @@
+package geister;
+
+public interface Geist {
+	public void anzeigen();
+	
+}
diff --git a/src/geister/GeistTyp.java b/src/geister/GeistTyp.java
new file mode 100644
index 0000000..fe46fcf
--- /dev/null
+++ b/src/geister/GeistTyp.java
@@ -0,0 +1,6 @@
+package geister;
+
+public enum GeistTyp {
+	POLTERGEIST,
+	SUMPFGEIST
+}
diff --git a/src/gelaende/Gebirge.java b/src/gelaende/Gebirge.java
new file mode 100644
index 0000000..7baf35e
--- /dev/null
+++ b/src/gelaende/Gebirge.java
@@ -0,0 +1,8 @@
+package gelaende;
+
+public class Gebirge implements Gelaende {
+
+	public void darstellen() {
+		System.out.println("Gebirgslandschaft");
+	}
+}
diff --git a/src/gelaende/Gelaende.java b/src/gelaende/Gelaende.java
new file mode 100644
index 0000000..1939475
--- /dev/null
+++ b/src/gelaende/Gelaende.java
@@ -0,0 +1,6 @@
+package gelaende;
+
+public interface Gelaende {
+	
+	public void darstellen();
+}
diff --git a/src/gelaende/Sumpfgebiet.java b/src/gelaende/Sumpfgebiet.java
new file mode 100644
index 0000000..e6919f9
--- /dev/null
+++ b/src/gelaende/Sumpfgebiet.java
@@ -0,0 +1,8 @@
+package gelaende;
+
+public class Sumpfgebiet implements Gelaende {
+
+	public void darstellen() {
+		System.out.println("Ein Sumpfgebiet");
+	}
+}
diff --git a/src/monster/Drache.java b/src/monster/Drache.java
new file mode 100644
index 0000000..84b43b0
--- /dev/null
+++ b/src/monster/Drache.java
@@ -0,0 +1,15 @@
+package monster;
+
+import monster.Monster;
+
+public class Drache extends Monster {
+
+	public Drache() {
+		super();
+		schreckwert = 5;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Drache mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Kobold.java b/src/monster/Kobold.java
new file mode 100644
index 0000000..3122a24
--- /dev/null
+++ b/src/monster/Kobold.java
@@ -0,0 +1,13 @@
+package monster;
+
+public class Kobold extends Monster {
+
+	public Kobold() {
+		super();
+		schreckwert = 0;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Kobold mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Kruemelmonster.java b/src/monster/Kruemelmonster.java
new file mode 100644
index 0000000..84c1d34
--- /dev/null
+++ b/src/monster/Kruemelmonster.java
@@ -0,0 +1,13 @@
+package monster;
+
+public class Kruemelmonster extends Monster {
+
+	public Kruemelmonster() {
+		super();
+		schreckwert = -5;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Kruemelmonster mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Monster.java b/src/monster/Monster.java
new file mode 100644
index 0000000..d1170b5
--- /dev/null
+++ b/src/monster/Monster.java
@@ -0,0 +1,45 @@
+package monster;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import gegenstaende.Gegenstand;
+
+public abstract class Monster {
+	protected int schreckwert;
+	protected ArrayList<Gegenstand> gegenstaende;
+	
+	public Monster() {
+		gegenstaende = new ArrayList<Gegenstand>();
+	}
+	
+	public abstract void darstellenMonster();
+	
+	public void addGegenstand(Gegenstand g) {
+		gegenstaende.add(g);
+	}
+	
+	public Iterator<Gegenstand> getGegenstaende() {
+		return gegenstaende.iterator();
+	}
+	
+	public int berechneSchreckwert() {
+		int sum;
+		
+		sum = schreckwert;
+		Iterator<Gegenstand> i = getGegenstaende();
+		while (i.hasNext()) {
+			sum = sum + ((Gegenstand)i.next()).getSchreckwert();
+		}
+		
+		return sum;
+	}
+	
+	public void darstellen() {
+		darstellenMonster();
+		Iterator<Gegenstand> i = getGegenstaende();
+		while (i.hasNext()) {
+			System.out.println("Ich besitze: " + ((Gegenstand)i.next()).getBeschreibung());
+		}
+	}
+}
diff --git a/src/monster/TestDrive.java b/src/monster/TestDrive.java
new file mode 100644
index 0000000..8d00e51
--- /dev/null
+++ b/src/monster/TestDrive.java
@@ -0,0 +1,91 @@
+package monster;
+
+import gegenstaende.Hexenmaske;
+
+public class TestDrive {
+
+	public static void main(String[] args) {
+//		Observer beobachter;
+//		beobachter = new SchreckwertBeobachter();
+
+		Monster kruemelmonster = new Kruemelmonster();
+		kruemelmonster.darstellen();
+//		kruemelmonster.addObserver(beobachter);
+//		kruemelmonster.kommunizieren();
+		System.out.println();
+		
+		Monster kobold = new Kobold();
+		kobold.darstellen();
+//		kobold.addObserver(beobachter);
+//		kobold.kommunizieren();
+		kobold.addGegenstand(new Hexenmaske());
+		kobold.darstellen();
+//		kobold.kommunizieren();
+		System.out.println();
+		
+//		Geist poltergeist = new Poltergeist();
+//		poltergeist.anzeigen();
+//		System.out.println();
+//		
+//		Monster sumpfgeist = new GeistAdapter(new Sumpfgeist());
+//		sumpfgeist.darstellen();
+//		sumpfgeist.addObserver(beobachter);
+//		sumpfgeist.kommunizieren();
+//		sumpfgeist.addGegenstand(new Clownsnase());
+//		sumpfgeist.darstellen();
+//		sumpfgeist.kommunizieren();
+//		System.out.println();
+//		
+//		Monsterfabrik fabrik = new SchrecklicheMonsterfabrik();
+//		Monster drache = fabrik.createMonster("Drache");
+//		drache.darstellen();
+//		drache.kommunizieren();
+//		System.out.println();
+//
+//		Monsterfabrik monsterFabrik = new Monsterfabrik();
+//		Monster fabrikKobold = monsterFabrik.createMonster("Kobold");
+//		fabrikKobold.darstellen();
+//		fabrikKobold.kommunizieren();
+//		System.out.println();
+//		 
+//		Monster fabrikSumpfgeist = new GeistAdapter(Geisterfabrik.createGeist(GeistTyp.SUMPFGEIST));
+//		fabrikSumpfgeist.darstellen();
+//		fabrikSumpfgeist.kommunizieren();
+//		System.out.println();
+//
+//		Spielgenerator generator = new MonsterSpielGenerator();
+//		Monster monsterSpielKreatur = generator.createKreatur();
+//		Gebaeude monsterSpielGebaeude = generator.createGebaeude();
+//		Gelaende monsterSpielGelaende = generator.createGelaende();
+//		monsterSpielKreatur.darstellen();
+//		monsterSpielGebaeude.darstellen();
+//		monsterSpielGelaende.darstellen();
+//		System.out.println();
+//		
+//		generator = new GeisterSpielGenerator();
+//		Monster geisterSpielKreatur = generator.createKreatur();
+//		Gebaeude geisterSpielGebaeude = generator.createGebaeude();
+//		Gelaende geisterSpielGelaende = generator.createGelaende();
+//		geisterSpielKreatur.darstellen();
+//		geisterSpielGebaeude.darstellen();
+//		geisterSpielGelaende.darstellen();
+//		System.out.println();
+
+//		Monster testMonster = new Drache();
+//		testMonster.darstellen();
+//		testMonster.addObserver(beobachter);
+//		testMonster.kommunizieren();
+//		testMonster.aufstehenEreignis(); // schlafen -> essen
+//		testMonster.arbeitenEreignis();  // essen -> arbeiten
+//		testMonster.ausruhenEreignis();  // arbeiten -> ausruhen
+//		testMonster.schlafenEreignis();  // ausruhen -> schlafen
+//		testMonster.aufstehenEreignis();
+//		testMonster.hexeKommtEreignis();
+//		testMonster.verletztEreignis();
+//		testMonster.geheiltEreignis();
+//		testMonster.hexeGehtEreignis();
+//		System.out.println();
+
+		
+	}
+}
diff --git a/src/monster/monster_ausgabe.txt b/src/monster/monster_ausgabe.txt
new file mode 100644
index 0000000..96bfab8
--- /dev/null
+++ b/src/monster/monster_ausgabe.txt
@@ -0,0 +1,52 @@
+Ich bin ein Kruemelmonster mit Schreckwert: -5
+Ich erzaehle Witze
+
+Ich bin ein Kobold mit Schreckwert: 0
+Ich mache Smalltalk
+Beobachter meldet: Schreckwert geändert: 2
+Ich bin ein Kobold mit Schreckwert: 2
+Ich besitze: Hexenmaske
+Ich mache den Menschen Angst
+
+Huhuuu. Ich bin ein Poltergeist
+
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich mache den Menschen Angst
+Beobachter meldet: Schreckwert geändert: -1
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich besitze: Clownsnase
+Ich erzaehle Witze
+
+Ich bin ein Drache mit Schreckwert: 6
+Ich besitze: Frankensteinschraube
+Ich mache den Menschen Angst
+
+Ich bin ein Kobold mit Schreckwert: 0
+Ich mache Smalltalk
+
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich mache den Menschen Angst
+
+Ich bin ein Kobold mit Schreckwert: 0
+Eine Höhle
+Gebirgslandschaft
+
+Huhuuu. Ich bin ein Poltergeist
+Ein Schloss
+Ein Sumpfgebiet
+
+Ich bin ein Drache mit Schreckwert: 5
+Ich mache den Menschen Angst
+Aufwachen
+Aufstehen
+Arbeiten
+Ausruhen
+Schlafen
+Einschlafen
+Aufwachen
+Aufstehen
+Kämpfen
+Heilen
+Kämpfen
+Schlafen
+Einschlafen
\ No newline at end of file
diff --git a/src/spielgenerator/SpielTyp.java b/src/spielgenerator/SpielTyp.java
new file mode 100644
index 0000000..eca4f7b
--- /dev/null
+++ b/src/spielgenerator/SpielTyp.java
@@ -0,0 +1,6 @@
+package spielgenerator;
+
+public enum SpielTyp {
+	GEISTERWELT,
+	MONSTERWELT
+}
diff --git a/src/spielgenerator/Spielgenerator.java b/src/spielgenerator/Spielgenerator.java
new file mode 100644
index 0000000..3d9fcae
--- /dev/null
+++ b/src/spielgenerator/Spielgenerator.java
@@ -0,0 +1,13 @@
+package spielgenerator;
+
+import gebaeude.Gebaeude;
+import gelaende.Gelaende;
+import monster.Monster;
+
+public interface Spielgenerator {
+	
+	public Monster createKreatur();
+	public Gebaeude createGebaeude();
+	public Gelaende createGelaende();
+
+}
diff --git a/src/verhalten/Verhalten.java b/src/verhalten/Verhalten.java
new file mode 100644
index 0000000..076548f
--- /dev/null
+++ b/src/verhalten/Verhalten.java
@@ -0,0 +1,5 @@
+package verhalten;
+
+public interface Verhalten {
+	public void kommunizieren();
+}
-- 
GitLab