2012-08-01 19 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