diff --git a/Raum.java b/Raum.java index 6c8c093..c9e4fc8 100644 --- a/Raum.java +++ b/Raum.java @@ -1,3 +1,6 @@ +import java.util.HashMap; +import java.util.Set; + /** * Diese Klasse modelliert Räume in der Welt von Zuul. * @@ -12,11 +15,8 @@ */ public class Raum { - public String beschreibung; - public Raum nordausgang; - public Raum suedausgang; - public Raum ostausgang; - public Raum westausgang; + private String beschreibung; + private HashMap ausgaenge; /** * Erzeuge einen Raum mit einer Beschreibung. Ein Raum @@ -29,30 +29,25 @@ public class Raum this.beschreibung = beschreibung; } + /** - * Definiere die Ausgänge dieses Raums. Jede Richtung - * führt entweder in einen anderen Raum oder ist 'null' - * (kein Ausgang). - * @param norden Der Nordausgang. - * @param osten Der Ostausgang. - * @param sueden Der Südausgang. - * @param westen Der Westausgang. + * Definiere die Ausgänge dieses Raums. Jeder Ausgang führt in einen anderen Raum. + * @param richtung Die Richtung des Ausgangs der geändert werden soll. + * @param raum Das Raumobjekt */ - public void setzeAusgaenge(Raum norden, Raum osten, - Raum sueden, Raum westen) + public void setzeAusgaenge(String richtung, Raum raum) { - if(norden != null) { - nordausgang = norden; + if(raum != null && richtung != null){ + ausgaenge.put(richtung, raum); } - if(osten != null) { - ostausgang = osten; - } - if(sueden != null) { - suedausgang = sueden; - } - if(westen != null) { - westausgang = westen; + } + + public String gibAusgaengeAlsString() { + String ausgaengeAlsString = ""; + for(String ausgang : ausgaenge.keySet()){ + ausgaengeAlsString += ausgang + " "; } + return ausgaengeAlsString; } /** @@ -62,4 +57,8 @@ public class Raum { return beschreibung; } + + public Raum gibAusgang(String richtung) { + return ausgaenge.get(richtung); + } } diff --git a/Spiel.java b/Spiel.java index ec4fafb..7f8421e 100644 --- a/Spiel.java +++ b/Spiel.java @@ -19,7 +19,7 @@ public class Spiel { - private Parser parser; + private final Parser parser; private Raum aktuellerRaum; /** @@ -46,11 +46,18 @@ public class Spiel buero = new Raum("im Verwaltungsbüro der Informatik"); // die Ausgänge initialisieren - draussen.setzeAusgaenge(null, hoersaal, labor, cafeteria); - hoersaal.setzeAusgaenge(null, null, null, draussen); - cafeteria.setzeAusgaenge(null, draussen, null, null); - labor.setzeAusgaenge(draussen, buero, null, null); - buero.setzeAusgaenge(null, null, null, labor); + draussen.setzeAusgaenge("Ost", hoersaal); + draussen.setzeAusgaenge("Süd", labor); + draussen.setzeAusgaenge("West", cafeteria); + + hoersaal.setzeAusgaenge("West", draussen); + + cafeteria.setzeAusgaenge("Ost", draussen); + + labor.setzeAusgaenge("Nord", draussen); + labor.setzeAusgaenge("Ost", buero); + + buero.setzeAusgaenge("West", labor); aktuellerRaum = draussen; // das Spiel startet draussen } @@ -146,19 +153,7 @@ public class Spiel String richtung = befehl.gibZweitesWort(); // Wir versuchen, den Raum zu verlassen. - Raum naechsterRaum = null; - if(richtung.equals("north")) { - naechsterRaum = aktuellerRaum.nordausgang; - } - if(richtung.equals("east")) { - naechsterRaum = aktuellerRaum.ostausgang; - } - if(richtung.equals("south")) { - naechsterRaum = aktuellerRaum.suedausgang; - } - if(richtung.equals("west")) { - naechsterRaum = aktuellerRaum.westausgang; - } + Raum naechsterRaum = aktuellerRaum.gibAusgang(richtung); if (naechsterRaum == null) { System.out.println("Dort ist keine Tür!"); @@ -172,19 +167,7 @@ public class Spiel private void rauminfoAusgeben() { System.out.println("Sie sind " + aktuellerRaum.gibBeschreibung()); System.out.print("Ausgänge: "); - if (aktuellerRaum.nordausgang != null) { - System.out.print("north "); - } - if (aktuellerRaum.ostausgang != null) { - System.out.print("east "); - } - if (aktuellerRaum.suedausgang != null) { - System.out.print("south "); - } - if (aktuellerRaum.westausgang != null) { - System.out.print("west "); - } - System.out.println(); + System.out.println(aktuellerRaum.gibAusgaengeAlsString()); }