import java.util.HashMap; import java.util.Set; /** * Diese Klasse modelliert Räume in der Welt von Zuul. * * Ein "Raum" repräsentiert einen Ort in der virtuellen Landschaft des * Spiels. Ein Raum ist mit anderen Räumen über Ausgänge verbunden. * Mögliche Ausgänge liegen im Norden, Osten, Süden und Westen. * Für jede Richtung hält ein Raum eine Referenz auf den * benachbarten Raum. * * @author Michael Kölling und David J. Barnes * @version 31.07.2011 */ public class Raum { private String beschreibung; private HashMap ausgaenge; /** * Erzeuge einen Raum mit einer Beschreibung. Ein Raum hat anfangs keine * Ausgänge. * * @param beschreibung * enthält eine Beschreibung in der Form "in einer Küche" oder * "auf einem Sportplatz". */ public Raum(String beschreibung) { this.beschreibung = beschreibung; this.ausgaenge = new HashMap<>(); } /** * Definiert die Ausgänge dieses Raums. * * @param richtung * Die Richtung (north, east, south, west) * @param raum * Der nächste Raum */ public void setzeAusgaenge(String richtung, Raum raum) { ausgaenge.put(richtung, raum); } /** * Gibt den Raum für eine Richtung zurück * * @param richtung * Die Richtung (north, east, south, west) * @return Der nächste Raum */ public Raum gibAusgang(String richtung) { return ausgaenge.get(richtung); } /** * @return die Beschreibung dieses Raums. */ public String gibBeschreibung() { return beschreibung; } /** * Liefert eine Beschreibung der Ausgänge dieses Raumes, bespielsweise * "Ausgänge: north west". * * @return eine Beschreibung der verfügbaren Ausgänge */ public String gibAusgaengeAlsString() { String resultat = "Ausgänge:"; Set ausgaengeSet = ausgaenge.keySet(); for (String ausgang : ausgaengeSet) { resultat += " " + ausgang; } return resultat; } /** * Liefert eine lange Beschreibung dieses Raumes, in der Form * Sie sind in der Küche * Ausgänge: north west * * @return eine lange Beschreibung dieses Raumes. */ public String gibLangeBeschreibung() { return "Sie sind " + beschreibung + ".\n" + gibAusgaengeAlsString(); } }