循环回到python中的主菜单

时间:2013-10-12 09:48:02

标签: python loops

我在python 3.3上制作基于短信的游戏。这是我的代码的开始:

while True:

  print ("You must answer all questions in block capitals")
  print ("Welcome to maze runner")
  print ("To learn about the controls press C")
  print ("To learn the about the different types T")
  print ("To play press START")
  run = input ()
  #Controls
  if run == "C":
     print ("To attack press H")
     print ("To walk forward press W")
     print ("To turn left press A")
     print ("To turn right press D")
     print ("To turn around press S")
     print ("To block press B")
     print ("To open stats press Q")
     print ("To open this screen press C")
     print ("To close this screen press C")
  #Types
  if run == "T":
    print ("Soldier. Press S for more info")
    print ("Archer. Press A for more info")
    print ("Mage. Press M for more info")
    print ("Changeling. Press C for more info")
    print ("Rouge. Press R for more info")
    print ("Press M to go to main menu")
    type_info = input()
    if type_info == "M":
       break
    #Solider info
    if type_info == "S":
       print ("Soldier: Good at close combat")
       print ("         Weak at long range combat")
       print ("         Average speed")
       print ("         Average blocker")
       print ("Press M to go to main menu")
       return_to_menu = input()
       if return_to_menu == "M":
          break      
    #Archer info
    if type_info == "A":
       print ("Archer: Weak at close combat")
       print ("        Good at long range combat")
       print ("        Good speed")
       print ("        Average blocker")
       print ("Press M to go to main menu")
    #Mage info
    if type_info == "M":
       print ("Mage: Weak at close combat")
 print ("      Good at long range combat")
       print ("      Average speed")
 print ("      Good blocker")
       print ("Press M to go to main menu")
    #Changeling info
    if type_info == "C":
       print ("Changling: Average at close combat")
       print ("           Average at long range combat")
       print ("           Average speed")
       print ("           Average blocker")
       print ("Press M to go to main menu")
    #Rouge info
    if type_info == "R":
       print ("Rouge:  Average at close combat")
       print ("        Average at long range combat")
       print ("        Good speed")
       print ("        Good blocker")
       print ("Press M to go to main menu")

我将下面的代码添加到了一些代码中。知道我什么时候运行它我得到一个错误,说不清楚地使用标签空间并突出显示行尾说:

  print ("Mage: Weak at close combat")

为什么行之后没有空格

3 个答案:

答案 0 :(得分:2)

当我跑步时,我得到:

...        print ("Mage: Weak at close combat")
...  print ("      Good at long range combat")
  File "<stdin>", line 51
    print ("      Good at long range combat")
                                            ^
IndentationError: unindent does not match any outer indentation level

检查“擅长长距离战斗”行 - 它似乎有一个标签而不是空格。

答案 1 :(得分:1)

当您不想返回主菜单时,您可以将所有上述代码放在while True:循环中,并将break放在循环中。

while True:
    # your code here
    return_to_menu = input()
    if return_to_menu != 'M':
        break

另一方面,我可能会使用else if s。它们有点快,因为当其中一个条件匹配时,if ... else if块中的其他条件不会被评估。

答案 2 :(得分:0)

print ("Soldier. Press S for more info")
print ("Archer. Press A for more info")
print ("Mage. Press M for more info")
print ("Changeling. Press C for more info")
print ("Rouge. Press R for more info")
print ("Press M to go to main menu")

所以M对于Mage和Menu来说都是如此。糟糕。