wie beende ich das programm ab einem bestimmten punkt in einem if-Befehl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
drachenjoghurt
User
Beiträge: 2
Registriert: Montag 12. Oktober 2020, 20:59

hey,
ich habe ein verzweigungsprogramm in form eines dungeonquest programmiert.
nur leider hab ich keine ahnung wie ich bei einem pfad das programm stoppe
ich will halt dass er nach jedem print("the end") ganz aufhört und nicht den nächsten text generiert
leider funktioniert nur beim ersten das break danach nicht mehr
habe mit break, import system+sys.exit() versucht leider hat es nicht funktioniert
programm funktioniert aber halt nach print("the end") wird dennoch text generiert und ich will es halt perfekt haben :) :) :)

mein code:

"Verzweigung-Dungeon Quest"

print(" Dungeon Quest")
print(" ===================")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#erste Frage
print(" Bist du bereit die Prinzessin zu retten? ")
print(" j/n")
wahla = input("1. ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
###############################################################################################################################


#wenn Antwort "n" ist von "#erste Frage"
if wahla == "n":
print("Ok, Tschau. Hast einfach eine sexy Prinzessin zum Sterben zurückgelassen. :)")

#wenn Antwort "j" ist von "#erste Frage"
elif wahla == "j" :
print("Dann starten wir mal das Abenteuer.")
print(" ")

###############################################################################################################################

print("Du triffst auf eine Gabelung.")
print("Der linke Weg führt zu eine Taverne (l). Der rechte Weg führt dich zu einem Schloss (r).")
print(" ")

###############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#erste Dungeonfrage
print("Links (l) oder Rechts (r)?")
wahlb = input("1) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
###############################################################################################################################


#wenn Antwort "l" ist von "#erste Dungeonfrage"
if wahlb == "l":
print("In der Taverne triffst du auf eine alte Hexe.")
print("Sie erzählt dir von einer Prinzessin, die sich in dem Schloss von Perversus gefangen gehalten wird.")
print("Um sie zu retten, bittet sie dir zwei Tränke.")
print("Der eine Trank ist ein Eiszauber(1). Der andere Trank ist ein Kuchenzauber(2).")
print(" ")

###############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#


#zweite Dungeonfrage
print("Was wählst du?")
wahlc = input("2) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
###############################################################################################################################

#wenn Antwort "(1)" ist von "#zweite Dungeonfrage"
if wahlc == "1":
print("Du bist unterwegs und triffst auf einem Troll.")
print("Du wirfst dein Eistrank, aber nichts passiert.")
print("Der Troll nimm dich in seine Hölle mit.")
print(" ")
print(" The End")
print(" ")

#wenn Antwort "(2)" ist von "#zweite Dungeonfrage"
elif wahlc == "2":
print("Du bist unterwegs und triffst auf einem Troll.")
print("Du wirfst dein Kuchentrank.")
print("Der Troll wird zu einem Kuchen.")
print("Eine Schar von Goblins kommen und haben den Trollkuchen gegessen.")
print("Als Dank schenken die Goblins dir Caliburn.")
print(" ")

###############################################################################################################################

#wenn Antwort "r" ist von "#erste Dungeonfrage"
elif wahlb == "r":
print("Beim Schloss triffst du einen traurigen König in einem zerstörten Schloss.")
print("Er erzählt dir, dass sein geliebter Sohn, der sich als Prinzessin verkleidet hat, von dem skrupellosen König Perversus entführt wurde.")
print("Der König bittet dich sein Sohn zu retten.")
print(" ")

###############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#zweite Dungeonfrage alternative
print("Wirst du sie retten?")
print("j/n")
wahlcc = input("2) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#wenn Antwort "j" ist von "#zweite Dungeonfrage alternative"
if wahlcc == "j":
print("Du folgst die Bitte des Königs und rettet sie.")
print("Als Dank gibt er dir Excalibur.")
print(" ")

#wenn Antwort "n" ist von "#zweite Dungeonfrage alternative"
elif wahlcc == "n":
print("Der König wird sauer.")
print("Er reißt sein Oberteil aus und schlug dich zu Tode.")
print(" The End")
print(" ")

##############################################################################################################################

print("Du bist nun unterwegs, um die Prinzessin zu retten.")
print("Eine Truppe von Eichhörnchenmenschen greifen dich an.")
print(" ")

##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#dritte Dungeonfrage
print("Nutzt du Caliburn als Waffe?")
print("j/n")
weapon = input("3) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#wenn Antwort "j" ist von "#dritte Dungeonfrage"
if weapon == "n":
print("Mit Excalibur konntest du dich gut wehren. Du bekamst eine Karte mit den Aufenthaltsort der Prinzessin.")
print("Du reitest weiter, aber gleich geht die Sonne unter.")
print(" ")

##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#vierte Dungeonfrage
print("Wirst du rasten oder nicht?")
print("j/n")
wahld = input("4) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#wenn Antwort "j" ist von "#vierte Dungeonfrage"
if wahld == "j":
print("Gute Wahl. Nach so nen Kampf braucht man ne Pause. Du hast dich erholt und hast wieder volle Kraft.")
print("Du kamst in der Nacht am Schloss an.")
print(" ")

#wenn Antwort "n" ist von "#vierte Dungeonfrage"
elif wahld == "n":
print("Du gehst weiter. Unterwegs wirst du von Banditen überfällt. Wegen den Kampf gegen die Eichhörnchenmenschen hast du kaum noch Kraft.")
print("Du wirst überfallen und entführt.")
print(" The End")
print(" ")

##############################################################################################################################

#wenn Antwort "n" ist von "#dritte Dungeonfrage"
elif weapon == "j":
print("Mit Caliburn konntest du dich zwar wehren, aber musstest fliehen.")
print("Durch deine Flucht trafst du einen Wanderer, der dir im Austausch mit Caliburn sagen wird, wo sich die Prinzessin befindet.")
print(" ")

##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#vierte Dungeonfrage alternative
print("Gehs du den Deal ein?")
print("j/n")
wahldd = input("4) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#wenn Antwort "j" von #vierte Dungeonfrage alternative"
if wahldd == "j":
print("Du gabst in Caliburn und er sagt dir, du sollst in Richtung Norden gehen.")
print("Mit seiner Hilfe kamst du in der Nacht am Schloss an.")
print(" ")

#wenn Antwort "n" von #vierte Dungeonfrage alternative"
elif wahldd == "n":
print("Du gabst ihn nicht Caliburn. Du liefst weiter, aber hast dich verirrt und suchst seit Jahren immernoch nach der Prinzssin.")
print(" The End")
print(" ")

##############################################################################################################################

print("Vor dem Schloss sind Soldaten.")
print("Bekämpfst du sie oder suchst nach einen Geheimweg?")
print(" ")

##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#fünfte Dungeonfrage
print("Kämpfen (k) oder Geheimweg (g)?")
wahle = input("5) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#wenn Antwort "k" ist von "#fünfte Dungeonfrage"
if wahle == "k":

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

print("Kurze Frage: Hast du eine Waffe bei dir?")
print("j/n")
wahle1 = input("((6)) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
#############################################################################################################################

#wenn Antwort "j" ist von "((6))"
if wahle1 == "j":
print("Du besiegst die.")

#wenn Antwort "n" ist von ((6))
elif wahle1 == "n":
print("Du wirst getötet.")
print(" The End")
print(" ")

##############################################################################################################################

#wenn Antwort "g" ist von "#fünfte Dungeonfrage"
elif wahle == "g":
print("Du hast einen Weg gefunden.")

##############################################################################################################################

print("Du gelangst in das Schloss.")
print("Im Schloss triffst du König Perversus und bekämpfst ihn.")
print(" ")
##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#sechste Dungeonfrage
print("Möchtest du deine Geheimtechnik (g) oder deine Familientechnik (f) nutzen?")
wahlf = input ("6) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
##############################################################################################################################

#wenn Antwort "g" ist von "#sechste Dungeonfrage"
if wahlf == "g":
print("Deine Geheimtechnik hat nicht geholfen. (Erzähler):Ich glaube ihn anzufurzen ist nicht so efektiv (hahaha).")
print(" The End")
print(" ")

#wenn Antwort
elif wahlf == "f":
print("Deine Familietechnick war sehr effektiv. Durch das Bündeln der Kräfte deiner gesamten Familie konntest du ihn besiegen.")
print("Mit seinen letzten Worten sagte König Perversus: Don't go into the trap!!!")
print(" ")

##############################################################################################################################

print("Ohne weitere Hindernisse gelangst du zu der Prinzessin.")
print("Die Prinzessin war überglücklich und küsste dich.")
print(" ")

##############################################################################################################################
#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#

#siebte Dungeonfrage
print("Erwiderst du ihre Liebe zurück?")
print("j/n")
wahlg = input("7) ")
print(" ")

#IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#
##############################################################################################################################

#wenn Antwort "j" ist von "#siebte Dungeonfrage"
if wahlg == "j":
print("Du erwiderst ihre Liebe und heiratet sie später und bekam mit ihr Kinder.")

#wenn Antwort "n" ist von "#siebte Dungeonrage"
elif wahlg == "n":
print("Du bekamst von ihrem Vater ein Sack voller Gold und lebtest ein glückliches Leben")

print(" The End")
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@drachenjoghurt: Du musst halt die Programmstruktur richtig machen, so dass nach einem Konstrukt wo in einem Zweig eine Ende erreicht ist, nicht noch Code *hinter* diesem Konstrukt steht, der ausgeführt wird. Der Muss auch in einem Zweig stehen. Und — das habe ich jetzt nicht nachgeschaut ob das ein Problem ist — man kann mit solchen Verzweigungen nur einen Entscheidungsbaum kodieren, also nicht verschiedene Zweige der Handlung wieder zusammenführen wenn das in/am Ende von Zweigen abgebrochen werden können soll.

Es gäbe da zwar eine hässliche Möglichkeit, aber das würde Dich nur ermutigen weiter solche furchtbaren hart kodierten Verzweigungen zu verwenden. 🙂

Edit: Lass diese komischen Linienkommentare besser bleiben. So etwas sollte man sich gar nicht erst angewöhnen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

In solch einem Spiel programmiert man die Logik nicht explizit, sondern definiert sich eine Datenstruktur, die immer nach dem selben Muster arbeitet.
Der Programmcode greift entscheidet dann nach einfachen Regeln, wo es im Spiel weiter geht.
Eine einfache Datenstruktur könnte so aussehen:

Code: Alles auswählen

"Verzweigung-Dungeon Quest"

SZENEN = {
    "erste Frage": (
        " Bist du bereit die Prinzessin zu retten? \n"
        "                j/n",
        {
            'j': ("Dann starten wir mal das Abenteuer.", "erste Dungeonfrage"),
            'n': ("Ok, Tschau. Hast einfach eine sexy Prinzessin zum Sterben zurückgelassen. :)", "ENDE"),
        }
    ),
    "erste Dungeonfrage": (
        "Du triffst auf eine Gabelung.\n"
        "Der linke Weg führt zu eine Taverne (l). Der rechte Weg führt dich zu einem Schloss (r).",
        {
            'l': ("Du betrittst die Taverne", "zweite Dungeonfrage"),
            'r': ("Du gehst den rechten Weg", "Schlossfrage"),
        }
    ),
    "zweite Dungeonfrage": (
        "In der Taverne triffst du auf eine alte Hexe.\n"
        "Sie erzählt dir von einer Prinzessin, die sich in dem Schloss von Perversus gefangen gehalten wird.\n"
        "Um sie zu retten, bittet sie dir zwei Tränke.\n"
        "Der eine Trank ist ein Eiszauber(1). Der andere Trank ist ein Kuchenzauber(2).\n"
        "Was wählst du?",
        {
            '1': ("Du bist unterwegs und triffst auf einem Troll.\n"
                  "Du wirfst dein Eistrank, aber nichts passiert.\n"
                  "Der Troll nimm dich in seine Hölle mit.",
                  "ENDE"),
            '2': ("Du bist unterwegs und triffst auf einem Troll.\n"
                  "Du wirfst dein Kuchentrank.\n"
                  "Der Troll wird zu einem Kuchen.\n"
                  "Eine Schar von Goblins kommen und haben den Trollkuchen gegessen.\n"
                  "Als Dank schenken die Goblins dir Caliburn."
                  "dritte Dungeonfrage"),
        }
    ),
    "Schlossfrage": (
        "Beim Schloss triffst du einen traurigen König in einem zerstörten Schloss.\n"
        "Er erzählt dir, dass sein geliebter Sohn, der sich als Prinzessin verkleidet hat, von dem skrupellosen König Perversus entführt wurde.\n"
        "Der König bittet dich sein Sohn zu retten.\n"
        "Wirst du sie retten?",
        {
            'j': (
                "Du folgst die Bitte des Königs und rettet sie.\n"
                "Als Dank gibt er dir Excalibur.",
                "dritte Dungeonfrage"),
            'n': (
                "Der König wird sauer.\n"
                "Er reißt sein Oberteil aus und schlug dich zu Tode.",
                "ENDE"),
        }
    ),
    "dritte Dungeonfrage": (
        "Du bist nun unterwegs, um die Prinzessin zu retten.\n"
        "Eine Truppe von Eichhörnchenmenschen greifen dich an.\n"
        "Nutzt du Caliburn als Waffe?",
        {
            'j': ("Gegen die Übermacht hast Du keine Chance.", "ENDE"),
            'n': ("Du versuchst zu fliehen, aber die Angreifer sind schneller.", "ENDE"),
        }
    ),
}

def main():
    print("            Dungeon Quest")
    print("         ===================")
    print()

    szene = "erste Frage"
    while True:
        frage, antworten = SZENEN[szene]
        print(frage)
        while True:
            wahl = input('> ')
            if wahl in antworten:
                break
            print(f"Zur Auswahl stehen: {'/'.join(antworten)}")
        antwort, szene = antworten[wahl]
        print(antwort)
        if szene == "ENDE":
            break
    print("              The End")

if __name__ == '__main__':
    main()
Antworten