91 lines
2.2 KiB
Java
91 lines
2.2 KiB
Java
|
|
|
|
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();
|
|
}
|
|
}
|