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

View File

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