Abenteuer.Daten.Orte
Class Raum

java.lang.Object
  |
  +--Abenteuer.Daten.Orte.Raum

public class Raum
extends java.lang.Object

Die Klasse Raum beschreibt einen einzelnen Raum nach folgenden Merkmalen:

Diese Klasse verwaltet auch automatisch eine Liste aller Räume im Spiel, um das Speichern zu erleichtern.

Version:
1.0
Author:
Dipl.-Ing. Michael Sonntag

Constructor Summary
Raum(java.lang.String raumName, java.lang.String beschreibung)
          Erzeugt einen neuen Raum mit einem Namen und einer Beschreibung.
Raum(java.lang.String raumName, java.lang.String beschreibung, Raum nachN, Raum nachNO, Raum nachO, Raum nachSO, Raum nachOben)
          Erzeugt einen neuen Raum mit einem Namen und einer Beschreibung.
 
Method Summary
 void addGegenstand(Gegenstand g)
          Fügt einen Gegenstand zum Raum hinzu
 Raum Ausgang(int richtung)
          Liefert den nächsten Raum zurück, der in eine bestimmte Richtung liegt.
 void beschreibeRaum(Person fuerWen)
          Diese Methode gibt die Beschreibung eines Raumes für eine bestimmte Person aus.
 boolean betreten(Person wer, Raum vorigerRaum)
          Liefert zurück, ob eine Person den Raum von einem bestimmten Raum her betreten darf.
 boolean enthaeltGegenstand(Gegenstand g)
          Stellt fest, ob ein Gegenstand sich in dem Raum befindet.
 Gegenstand enthaeltGegenstand(java.lang.String name)
          Stellt fest, ob ein Gegenstand mit diesem Namen sich in dem Raum befindet.
 java.util.Enumeration gegenstaende()
          Liefert eine Enumeration aller Gegenstände in diesem Raum zurück.
static Raum[][] generiereLabyrinth(int laenge, int breite, java.lang.String raumName, java.lang.String beschreibung, boolean beleuchtet)
          Liefert ein rechteckiges Array von Räumen zurück, die intern vollständig verbunden sind.
 boolean getBeleuchtung()
          Gibt zurück, ob der Raum beleuchtet ist
 java.lang.String getRaumName()
          Gibt den Namen des Raumes zurück
 long getRaumNummer()
          Gibt die eindeutige Nummer des Raumes zurück
protected  boolean istBeleuchtet()
          Wenn der Raum nicht beleuchtet ist und weder die Person eine Lichtquelle besitzt noch sich eine im Raum befindet, noch eine andere im Raum befindliche Person eine solche besitzt oder
sie nicht eingeschaltet ist,
dann
ist der Raum finster
 void removeGegenstand(Gegenstand g)
          Entfernt einen Gegenstand aus dem Raum
 void setBeleuchtung(boolean beleuchtet)
          Setzt die Beleuchtung
 void setzeAusgang(int richtung, Raum naechster)
          Hier kann ein beliebiger Ausgang gesetzt werden.
 void setzeEinAus(Raum hinein, Raum hinaus)
          Hier wird gesetzt, wo es von diesem Raum aus hinein geht, und wohin hinaus.
 void setzeRaufRunter(Raum hinauf, Raum hinunter)
          Hier wird gesetzt, wo es von diesem Raum aus hinauf geht, und wohin hinunter.
 boolean verlassen(Person wer, int inRichtung)
          Liefert zurück, ob eine Person den Raum in eine bestimmte Richtung hin verlassen darf.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Raum

public Raum(java.lang.String raumName,
            java.lang.String beschreibung)
Erzeugt einen neuen Raum mit einem Namen und einer Beschreibung. Er ist beleuchtet, enthält keine Gegenstände und hat keinen Ausgang.
Parameters:
raumName - Name des Raumes
beschreibung - Beschreibung des Raumes

Raum

public Raum(java.lang.String raumName,
            java.lang.String beschreibung,
            Raum nachN,
            Raum nachNO,
            Raum nachO,
            Raum nachSO,
            Raum nachOben)
Erzeugt einen neuen Raum mit einem Namen und einer Beschreibung. Er ist beleuchtet und enthält keine Gegenstände. Ausgänge nach N, NO, O, SO und hinauf können übergeben werden, es ist daher ein einfacheres Erzeugen von Karten möglich, wenn von der oberen nordöstlichen Ecke in Richtung der untere südwestlichen gearbeitet wird. Die Verbindungen werden auch in der Gegenrichtung gesetzt.
Parameters:
raumName - Name des Raumes
beschreibung - Beschreibung des Raumes
nachN - Raum der erreicht wird, wenn das Kommando "Gehe N" gegeben wird
nachNO - Raum der erreicht wird, wenn das Kommando "Gehe NO" gegeben wird
nachO - Raum der erreicht wird, wenn das Kommando "Gehe O" gegeben wird
nachSO - Raum der erreicht wird, wenn das Kommando "Gehe SO" gegeben wird
nachOben - Raum der erreicht wird, wenn das Kommando "Gehe hinauf" gegeben wird
Method Detail

setzeEinAus

public void setzeEinAus(Raum hinein,
                        Raum hinaus)
Hier wird gesetzt, wo es von diesem Raum aus hinein geht, und wohin hinaus. Jeder Wert kann null sein, um anzuzeigen, daß es hier keinen Weg gibt. Auch die Gegenrichtung wird hier gesetzt.
Parameters:
hinein - Der Raum der beim Kommando "Hinein" von hier aus erreicht wird
hinaus - Der Raum der beim Kommando "Hinaus" von hier aus erreicht wird

setzeRaufRunter

public void setzeRaufRunter(Raum hinauf,
                            Raum hinunter)
Hier wird gesetzt, wo es von diesem Raum aus hinauf geht, und wohin hinunter. Jeder Wert kann null sein, um anzuzeigen, daß es hier keinen Weg gibt. Auch die Gegenrichtung wird hier gesetzt.
Parameters:
hinauf - Der Raum der beim Kommando "Hinauf" von hier aus erreicht wird
hinunter - Der Raum der beim Kommando "Hinunter" von hier aus erreicht wird

setzeAusgang

public void setzeAusgang(int richtung,
                         Raum naechster)
Hier kann ein beliebiger Ausgang gesetzt werden. Achtung: der Rückweg wird hier NICHT gesetzt, sondern ist durch einen eigenen Aufruf zu installieren!
Parameters:
richtung - Die Richtung, in der der andere Raum von diesem aus gesehen zu erreichen ist
naechster - der Raum, der von hier aus zu erreiche ist

istBeleuchtet

protected boolean istBeleuchtet()
Wenn der Raum oder
sie nicht eingeschaltet ist,
dann
ist der Raum finster

beschreibeRaum

public void beschreibeRaum(Person fuerWen)
Diese Methode gibt die Beschreibung eines Raumes für eine bestimmte Person aus. Ist der Raum finster, so wird keine Beschreibung ausgegeben. Die möglichen Ausgangsrichtungen werden nur ausgegeben, wenn zumindest eine existiert. Befindet sich zumindest ein Gegenstand im Raum, so wird auch eine Liste der Gegenstände ausgegeben. Ebenso wird eine Liste der Personen (außer der, fuer die der Raum beschrieben wird!) ausgegeben, wenn sich mindestens eine andere im selben Raum aufhält.
Parameters:
fuerWen - Die Person, duer die der Raum beschrieben werden soll

getRaumNummer

public long getRaumNummer()
Gibt die eindeutige Nummer des Raumes zurück
Returns:
Eindeutige Nummer des Raumes

getRaumName

public java.lang.String getRaumName()
Gibt den Namen des Raumes zurück
Returns:
Name des Raumes

getBeleuchtung

public boolean getBeleuchtung()
Gibt zurück, ob der Raum beleuchtet ist
Returns:
True wenn beleuchtet

setBeleuchtung

public void setBeleuchtung(boolean beleuchtet)
Setzt die Beleuchtung
Parameters:
beleuchtet - Wenn true, kann der Raum auch ohne Lichtquelle jederzeit gesehen werden

addGegenstand

public void addGegenstand(Gegenstand g)
Fügt einen Gegenstand zum Raum hinzu
Parameters:
g - Der Gegenstand, der hinzugefügt werden soll. Ist er bereits im Raum, erfolgt keine Aktion

removeGegenstand

public void removeGegenstand(Gegenstand g)
Entfernt einen Gegenstand aus dem Raum
Parameters:
g - Der Gegenstand, der entfernt werden soll. Ist er nicht im Raum, erfolgt keine Aktion

enthaeltGegenstand

public Gegenstand enthaeltGegenstand(java.lang.String name)
Stellt fest, ob ein Gegenstand mit diesem Namen sich in dem Raum befindet. Dazu wird die Liste der im Raum befindlichen Gegenstände durchsucht.
Parameters:
name - Der allgemein bekannte (nicht eindeutige) Name des Gegenstands, der geprüft werden soll.
Returns:
Den Gegenstand falls enthalten, sonst null

enthaeltGegenstand

public boolean enthaeltGegenstand(Gegenstand g)
Stellt fest, ob ein Gegenstand sich in dem Raum befindet.
Parameters:
g - Der Gegenstand, der geprüft werden soll.
Returns:
True falls enthalten, sonst false

gegenstaende

public java.util.Enumeration gegenstaende()
Liefert eine Enumeration aller Gegenstände in diesem Raum zurück.
Returns:
Enumeration aller Gegenstände
See Also:
Enumeration

Ausgang

public Raum Ausgang(int richtung)
Liefert den nächsten Raum zurück, der in eine bestimmte Richtung liegt.
Parameters:
richtung - Der Ausgang, der benutzt werden soll um den nächsten Raum zu bestimmen.
Returns:
Den Raum oder null, falls es in diese Richtung keinen Ausgang gibt

verlassen

public boolean verlassen(Person wer,
                         int inRichtung)
Liefert zurück, ob eine Person den Raum in eine bestimmte Richtung hin verlassen darf. Hier immer true
Parameters:
wer - Wer den Raum verlassen möchte
inRichtung - Die Richtung, in die der Raum verlassen werden soll
Returns:
True falls der Raum verlassen werden darf

betreten

public boolean betreten(Person wer,
                        Raum vorigerRaum)
Liefert zurück, ob eine Person den Raum von einem bestimmten Raum her betreten darf. Liefert hier immer dann false, wenn der Raum unbeleuchtet ist und die Person die Lampe nicht bei sich trägt (Egal ob aktiviert oder nicht). Der vorige Raum ist bei dieser Implementierung nicht zu berücksichtigen.
Parameters:
wer - Wer den Raum betreten möchte
vorigerRaum - Der Raum, von dem aus dieser betreten werden soll
Returns:
True falls der Raum betreten werden darf

generiereLabyrinth

public static Raum[][] generiereLabyrinth(int laenge,
                                          int breite,
                                          java.lang.String raumName,
                                          java.lang.String beschreibung,
                                          boolean beleuchtet)
Liefert ein rechteckiges Array von Räumen zurück, die intern vollständig verbunden sind. Alle Verbindungen an den Ränder führen zu sich selbst zurück, außer die schrägen, die zum nächsten Raum führen (NO am nördlichen Rand führt zum nächsten Raum im O).
Alle Räume sind identisch (selber Namen und selbe Beschreibung). Das Labyrinth hat keine Verbindung nach außen, diese ist explizit extern zu setzen.
Parameters:
laenge - Ausdehnung in Räumen in O-W Richtung
breite - Ausdehnung in Räumen in N-S Richtung
Returns:
Zweidimensionales rechteckiges Array von Räumen