Python-Programm funktioniert nicht?
lp = 1
class Raum:
def __init__(self, name, details):
self.name = name
self.details = details
self.nebenräume = {}
def nebenraumhinzufügen(self, richtung, nebenraum):
self.nebenräume[richtung] = nebenraum
class Spieler:
def __init__(self, name, momentanerraum):
self.name = name
self.momentanerraum = momentanerraum
def raumwechsel(self, richtung):
if richtung in self.momentanerraum.nebenräume[richtung]:
print("Jetzt bist du im" + self.momentanerraum.name)
print(self.momentanerraum.beschreibung)
else:
print("In diese Richtung kannst du nicht gehen.")
#räume
gang = Raum("Gang", "Bis auf Bilder gibt es hier nichts")
toilettenraum = Raum("Toilettenraum", "Es ist in \n zwei Räume geteilt, dem Waschbeckenraum und dem Toilettenraum.")
klassensaal = Raum("Klassensaal", "Es gibt einen Schrank, ein paar Tische und Stühle")
klassensaal.nebenraumhinzufügen("Gang", gang)
gang.nebenraumhinzufügen("Klassensaal", klassensaal)
gang.nebenraumhinzufügen("Toilettenraum", toilettenraum)
toilettenraum.nebenraumhinzufügen("Gang", gang)
#Spieler
spieler = Spieler("Malte", klassensaal)
while lp > 0:
print("Du kannst hierhin gehen:", ",".join(spieler.momentanerraum.nebenräume.))
richtung = input("Wohin willst du?")
Ich starte immer im Gang und kann nicht weg. Ich sehe den Fehler nicht.
1 Antwort
1) Hier hast du einen Syntaxfehler:
print("Du kannst hierhin gehen:", ",".join(spieler.momentanerraum.nebenräume.))
Der letzte Punkt muss weg.
2) Der Spieler startet immer im Klassensaal. Von dort aus kann er in den Gang, da dieser mit dem Raum verbunden ist.
Einen Raumwechsel stößt du in der Schleife nicht an, daher kann es auch nicht weitergehen.
spieler.raumwechsel(richtung)
Aber auch die Implementation der raumwechsel-Methode ist noch nicht richtig. Zum einen ist die if-Bedingung falsch. Du möchtest eigentlich nach einem Raumnamen in den verfügbaren Nebenräumen suchen (nicht nach einem Raum in einem Raum).
if richtung in self.momentanerraum.nebenräume:
Des Weiteren müsste, sofern die Bedingung eintrifft, der Raumwechsel auch wirklich stattfinden.
self.momentanerraum = self.momentanerraum.nebenräume[richtung]
Bei der Ausgabe der Raumbeschreibung nutzt du noch einen falschen Propertynamen (beschreibung statt details).