06_Praktikum-1_Zuul-schlecht/Raum.java

91 lines
2.2 KiB
Java
Raw Normal View History

2017-09-17 17:06:55 +02:00
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<String, Raum> 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<String> 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();
}
}