#Asks player for their name and whether they wish to enter or not
character_name = input(" Welcome to The Tenabris Manor, what is your
name?:")
print("")
print(" The towering gates stand before you to the large Manor, do you
enter?")
print("")
inp = ""
while inp != "enter" and inp != "leave":
inp = input(" enter enter or leave: ")
if inp != "enter" and inp != "leave":
print(" You must type enter or leave")
if inp == "enter":
print(" You push with all your might on the large gates, it swings open with
a loud clunk.")
if inp == "leave":
print("")
print(" You turn around and go back, probably for the best.")
print("")
print(" Your character", character_name, "turned back and never returned.")
input(" Press enter to exit")
SystemExit("")
def choose_room():
#key = False is so the person does not have the key until going upstairs
global key
key = False
while True:
print("")
print(" Bookshelfs line the walls, a staircase is to the left and a door
is straight ahead.")
print("")
print(" Type 'a' to: Go up the stairs")
print(" Type 'b' to: To go through the door")
print(" Type 'c' to: To check the bookshelfs")
ans = input("")
if ans=='a':
print(" You walk up the creaking stairs")
print(" At the top of the spiral staircase is a small observatory.")
print(" Looking around on some of stacks of books littering the room
you")
print(" find a small key!")
key = True
continue
elif ans=='b':
#The door detects whether the key is True or not/they have the key or not.
if key == True:
print(" You open the door with the small key.")
elif key == False:
print(" The door is locked, you will need a key to go through
it.")
continue
return
choose_room()
else:
print("The door is locked, you will need a key to go through
it.")
continue
return
choose_room()
else:
ans == 'c'
print(" You look through the thousands of books.")
print(" None of them interest you.")
continue
return
choose_room()
私の恐ろしいことを言い訳これは私の最初のプロジェクトであり、私はそれが最初にうまく動作します。Pythonは私のテキストアドベンチャーで私のdefを超えて何も印刷しません
また、これはスタックオーバーフローに関する私の最初の投稿です。
私の問題は、私が必要としていたすべてのことを完璧に処理したことですが、その後詳細を追加すると、後でそれを行うことにしました。最初の部分だけを実行すると、最初の部分は "def choose_room():"のビットを完全に無視します。
原因を見つけるのに役立つかもしれないことを私が考えることができます。次回は何かを変更する前にファイルのコピーを作成して、これが再び起こらないようにします。
誰も問題が見つからない場合は、プログラムを最初から再作成しようとします。
修正するための字下げがあるようです:-) Stack Overflowへようこそ! – Mangohero1
@Mangohero1は正しいです。あなたのインデントを修正した後もあなたのコードを問題なく走らせました。具体的には、 'def choose_room'の後に全てがインデントされてその関数の一部であることを示します(最後に' choose_room'を呼び出す以外) – Nathan
トリビアルですが、 'choose_room'の中で' choose_room() 'を呼ぶべきではありませんこの種の再帰が問題を引き起こす可能性があるからです。 –