# Textadventure, siehe https://peps.python.org/pep-0636/
dinge = {"Garten":["Rechen","Apfel","Birne"],
           "Haus":["Brot","Messer","Gabel","Teller"], 
         "Straße":[],  
        }
verbindungen = {"Straße": {"Süden":"Garten"},
                "Garten": {"Norden":"Straße", "Süden":"Haus"},
                "Haus":   {"Norden":"Garten"}
                }
essbar = ("Brot","Apfel","Birne") 
ort = "Haus"  
was_ich_trage = [] # was ich trage
zähler = 1
print("Textadventure")
while True:
    print("---")
    print("Ich bin jetzt hier:", ort)
    print("Ich sehe hier folgende Gegenstände:", dinge[ort] )
    print("mögliche Richtungen:", list(verbindungen[ort].keys()))   
    eingabe = input(f"({zähler}): kommandos (z.B. hilfe) >>>").strip()
    zähler += 1
    eingabe = eingabe.replace(",", " ") # Ersetze Komma mit Leerzeichen 
    match eingabe.split():  
        case ["hilfe"]:
            print("ich verstehe nur folgende Kommandos:")
            print("nimm, benutze, wirf, gehe, status, ende")
        case ["status"]:
            print("ich halte/trage momentan:", was_ich_trage)
        case ["ende"] | ["aufhören"] | ["hör", "auf"]:
            break
        case (["gehe", "nach", richtung] | ["gehe", richtung] |
              [richtung]) if richtung in verbindungen[ort]:
                ort = verbindungen[ort][richtung]
                print("ich gehe nach", richtung)
        case ["benutze", *gegenstände]:
            for g in gegenstände:
                if g not in was_ich_trage:
                    print("ich habe kein",g)    
                elif g in essbar:
                    print("ich esse:", g)
                    was_ich_trage.remove(g) # zerstört gegenstand
                else:
                    print("ich benutze:",g)                        
        case (["nimm",  *gegenstände] | ["hebe", *gegenstände, "auf"] |
              ["hebe", "auf", *gegenstände]):
            for g in gegenstände:
                if g in dinge[ort]:
                    dinge[ort].remove(g)
                    was_ich_trage.append(g)
                    print("ich nehme", g) 
                else: 
                    print("da ist kein",g,"den ich nehmen könnte")          
        case (["lass", "fallen", *gegenstände] | 
              ["lass", *gegenstände, "fallen"] | ["wirf", *gegenstände]|
              ["wirf", *gegenstände, "weg"]):
            for g in gegenstände:
                if g not in was_ich_trage:
                    print("ich habe kein",g)
                else:
                    was_ich_trage.remove(g)
                    dinge[ort].append(g)
                    print("ich lasse fallen:", g)    
        
        case _:
            print("ungültiges Kommando oder ungültige Aktion")
print("Spiel beendet")
