Aufgabe 3 und 4 ausgeführt.

This commit is contained in:
schrom01 2021-11-18 16:22:03 +01:00
parent fc8986f3ae
commit 1b6c99830d
2 changed files with 38 additions and 56 deletions

View File

@ -1,3 +1,6 @@
import java.util.HashMap;
import java.util.Set;
/** /**
* Diese Klasse modelliert Räume in der Welt von Zuul. * Diese Klasse modelliert Räume in der Welt von Zuul.
* *
@ -12,11 +15,8 @@
*/ */
public class Raum public class Raum
{ {
public String beschreibung; private String beschreibung;
public Raum nordausgang; private HashMap<String, Raum> ausgaenge;
public Raum suedausgang;
public Raum ostausgang;
public Raum westausgang;
/** /**
* Erzeuge einen Raum mit einer Beschreibung. Ein Raum * Erzeuge einen Raum mit einer Beschreibung. Ein Raum
@ -29,30 +29,25 @@ public class Raum
this.beschreibung = beschreibung; this.beschreibung = beschreibung;
} }
/** /**
* Definiere die Ausgänge dieses Raums. Jede Richtung * Definiere die Ausgänge dieses Raums. Jeder Ausgang führt in einen anderen Raum.
* führt entweder in einen anderen Raum oder ist 'null' * @param richtung Die Richtung des Ausgangs der geändert werden soll.
* (kein Ausgang). * @param raum Das Raumobjekt
* @param norden Der Nordausgang.
* @param osten Der Ostausgang.
* @param sueden Der Südausgang.
* @param westen Der Westausgang.
*/ */
public void setzeAusgaenge(Raum norden, Raum osten, public void setzeAusgaenge(String richtung, Raum raum)
Raum sueden, Raum westen)
{ {
if(norden != null) { if(raum != null && richtung != null){
nordausgang = norden; ausgaenge.put(richtung, raum);
} }
if(osten != null) {
ostausgang = osten;
} }
if(sueden != null) {
suedausgang = sueden; public String gibAusgaengeAlsString() {
} String ausgaengeAlsString = "";
if(westen != null) { for(String ausgang : ausgaenge.keySet()){
westausgang = westen; ausgaengeAlsString += ausgang + " ";
} }
return ausgaengeAlsString;
} }
/** /**
@ -62,4 +57,8 @@ public class Raum
{ {
return beschreibung; return beschreibung;
} }
public Raum gibAusgang(String richtung) {
return ausgaenge.get(richtung);
}
} }

View File

@ -19,7 +19,7 @@
public class Spiel public class Spiel
{ {
private Parser parser; private final Parser parser;
private Raum aktuellerRaum; private Raum aktuellerRaum;
/** /**
@ -46,11 +46,18 @@ public class Spiel
buero = new Raum("im Verwaltungsbüro der Informatik"); buero = new Raum("im Verwaltungsbüro der Informatik");
// die Ausgänge initialisieren // die Ausgänge initialisieren
draussen.setzeAusgaenge(null, hoersaal, labor, cafeteria); draussen.setzeAusgaenge("Ost", hoersaal);
hoersaal.setzeAusgaenge(null, null, null, draussen); draussen.setzeAusgaenge("Süd", labor);
cafeteria.setzeAusgaenge(null, draussen, null, null); draussen.setzeAusgaenge("West", cafeteria);
labor.setzeAusgaenge(draussen, buero, null, null);
buero.setzeAusgaenge(null, null, null, labor); 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 aktuellerRaum = draussen; // das Spiel startet draussen
} }
@ -146,19 +153,7 @@ public class Spiel
String richtung = befehl.gibZweitesWort(); String richtung = befehl.gibZweitesWort();
// Wir versuchen, den Raum zu verlassen. // Wir versuchen, den Raum zu verlassen.
Raum naechsterRaum = null; Raum naechsterRaum = aktuellerRaum.gibAusgang(richtung);
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;
}
if (naechsterRaum == null) { if (naechsterRaum == null) {
System.out.println("Dort ist keine Tür!"); System.out.println("Dort ist keine Tür!");
@ -172,19 +167,7 @@ public class Spiel
private void rauminfoAusgeben() { private void rauminfoAusgeben() {
System.out.println("Sie sind " + aktuellerRaum.gibBeschreibung()); System.out.println("Sie sind " + aktuellerRaum.gibBeschreibung());
System.out.print("Ausgänge: "); System.out.print("Ausgänge: ");
if (aktuellerRaum.nordausgang != null) { System.out.println(aktuellerRaum.gibAusgaengeAlsString());
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();
} }