2012-08-01 17 views
1

我想創建這個簡單的遊戲,但我遇到了麻煩。這是代碼,它不斷循環不同的答案。請原諒這個可怕的故事,有人可以幫忙嗎?字符串不斷重複,直到randint提供正確的答案。

如果選項等於正確(答案),代碼應該很快。但它並沒有,它只是保持循環兩個選項,直到它達到正確的。

import random 


def options(): 
    print() 
    print("What do you do?") 
    print("1. Check the local bakery to see if the criminal is hiding in the oven.") 
    print("2. Search the forest to see if he's made a quick getaway.") 
    print("3. Check with the innkeeper to see if anyone has come in recently.") 
    print("4. Search the sewers, this criminal scum will do anything for money.") 
    print("9. Quit.") 



print("On a dark and rainy night the town of Ogalu was quietly sleeping. On this night, a criminal \nwas amidst the sleeping people he sought to steal the King's crown and make himself rich." 
     "The criminal named Zalox snuck into the palace, and stole the crown without alerting the guards. \nAfter this he ran away, but you, Bob the guard, heard something. You went to check the king" 
     "he was safe, you then went to check the crown. They were gone!, you alert the townsguard and set \nout to catch this criminal scum.") 
correct = random.randint(1,4) 
options() 
option = int(input("What option: ")) 
while option != 9: 
    if option == 1: 
     if correct == option: 
      print("You make your way into the local bakery, you hear something drop. You turn around and there he is, the theif, in the local oven. You arrest him and put him in jail!") 
     else: 
      print("As you search the bakery you think you hear something near the oven, as you check it out you realise it's just a mouse. The theif isn't here!") 

    elif option == 2: 
     if correct == 2: 
      print("As you make your way towards the forest you see a shadow limping away, it's the theif! You chase after him and catch him, you send him to jail for life!") 
      break 
     else: 
      print("You head towards the forest, you think you hear something moving in the bushes, as you check it out a giant wolf chases you out of the forest, the theif isn't here") 
    elif option == 3: 
     if correct == 3: 
      print("You approach the innkeeper and ask if anyone suspicious has been staying there, the innkeeper says a man came in recently in a hurry, he's in his room. You dart upstairs, burst into his room" 
        "and arrest him!") 
      break 
     else: 
      print("You see the innkeeper walking his dog, you ask if anyone suspicious has been stayig with him, he says no. The theif isn't here") 

    elif option == 4: 
     if correct == 4: 
      print("You search the old, dirty, smelly sewers looking for the thief, in the distance you see a light and a person running. It's the thief! You take a shortcut and pounce on him! You put him to jail!") 
      break 
     else: 
      print("As you search the sewers you see nothing but smelly, dirty, sewage. Maybe the theif won't do anything for money. This was a bad idea, you make your way out the next exit") 

print("Congratulatious! You saved the King's crown by capturing the theif know as Zalox. He's sentanced to life in jail. The town can finally relax again! You are know as Hero of Ogalu!") 
+0

爲了後代,你可以縮進'選項'功能嗎? – mgilson 2012-08-01 02:11:06

+0

@mgilson:完成。你可以爲他做到這一點,你知道。 – 2012-08-01 02:19:48

+0

@BrianCain - 是的,但閱讀Meta上的帖子,似乎編輯問題的代碼由於某種原因而極爲不滿。我不確定這樣的微小編輯,但是......也許我會在那裏提出一個問題。 – mgilson 2012-08-01 02:21:43

回答

2

您做出的更改option的價值循環條件,而只是分配給該名稱的循環之外:

option = int(input("What option: ")) 
while option != 9: 

移動它的while循環,而不是內(也確保option的初始分配滿足while循環的條件!)。

此外,不請自來的建議:一旦你利用dict離子的力量,你將被吹走。這真是太棒了。將這些選項映射到要調用的字符串或對象或函數,並且可能更清晰和/或更具可擴展性。

+0

太快了!我坐在那裏想着 - 好吧,所有的突破聲明看起來像他們'重新在正確的地方......嗯......當我看到你發佈並擊敗了我時,我剛剛發現了它 – mgilson 2012-08-01 02:09:11

+0

非常感謝你,我誠實地更改該代碼大約3個小時試圖讓它工作!我真笨。 – Hyzenthlay 2012-08-01 02:53:57