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