虽然循环运动在类似Zork的python游戏中

时间:2016-07-16 16:29:33

标签: python adventure

我在制作可在我的python冒险游戏中运行的动作时遇到了麻烦。在运行时,玩家可以移动到不同的房间但是当试图移回房间时代码停止。

以下是代码:

A = False
B = False
Location = "A1"
Attack = 0
Defence = 0
Speed = 0
Health = 20
Knives = 10
Arrows = 10
inv = "a torch"
print('Hello operator')
Name = input('We will now begin preliminary setup, tell me, what is your name? ')
print('Good', Name)
print('Next select a Class')
print('Knight - A well rounded class with no certain advantage in any category, fights with a sword and metal armor')
print('Archer - Good with a bow and has amazing speed but wears light metal armor')
print('Mage - Can cast spells with a magic staff and can deal high amounts of damage but wears only cloth armor')
print('Rogue - A master of deception and very quick on thier feet, can deal devistating blows with a dagger and throwing knives')
while A == False:
    Class = input('Input class name here: ')
    if Class.lower() == "knight":
        Attack = 10
        Defence = 10
        Speed = 10
        print('You have chosen Knight')
        A = True
    elif Class.lower() == "archer":
        Attack = 10
        Defence = 3
        Speed = 8
        print('You have chosen Archer')
        A = True
    elif Class.lower() == "mage":
        Attack = 15
        Defence = 1
        Speed = 8
        print('You have chosen Mage')
        A = True
    elif Class.lower() == "rogue":
        Attack = 10
        Defence = 2
        Speed = 15
        print('You have chosen Rogue')
        A = True
    else:
        print('That is not a class')
print("For a full list of commands type [help]")
Command = input()
if Command.lower() == "help":
    print('help - Displays all commands')
    print('n,s,e,w - moves one tile in that direction')
    print('inv - Opens and checks your current inventory')
    print('stats - Prints all character stats')
    print('check - prints the information on the surroundings')
    print('Other words like [attack][run][drop][drink] and others can all be used throught the game, try words out to see if they work!')
elif Command.lower() == "check":
    print("You have awoken in a small room. The walls are made of stone and the only light is being given off by a torch")
elif Command.lower() == "stats":
    print("Name:", Name,", Class:", Class,", Attack:", Attack,", Defence:", Defence,", Speed:", Speed)
elif Command.lower() == "inv" and Class.lower() == "knight":
    print("You are carrying a sword and", inv)
elif Command.lower() == "inv" and Class.lower() == "mage":
    print("You are carrying a magical staff and", inv)
elif Command.lower() == "inv" and Class.lower() == "archer":
    print("You are carrying a bow,", Arrows, "arrows and", inv)
elif Command.lower() == "inv" and Class.lower() == "rogue":
    print("You are carrying", Knives, " throwing knives and", inv)    
while Location == "A1":
    if Command.lower() == "n":
        print("You can't go that way")
        Location = "A1"
    elif Command.lower() == "s":
        print("You move into a small room with a corridor on two sides")
        Location = "B1"
    elif Command.lower() == "w":
        print("You can't go that way")
        Location = "A1"
    elif Command.lower() == "e":
        print("You are in a corridor")
        Location = "A2"
    elif Command.lower() == "n":
        print("Starting room")
        Location = "A1"
while Location == "A2":
    Command = input()
    if Command.lower() == "n":
        print("You can't go that way")
        Location = "A2"
    elif Command.lower() == "s":
        print("You are in a corridor, a torch lights the hall")
        Location = "B2"
    elif Command.lower() == "e":
        print("You walk into a room, inside the room is a statue")
        Location = "A3"
    elif Command.lower() == "w":
        print("Starting room")
        Location = "A1"
while Location == "B1":
    Command = input()
    if Command.lower() == "n":
        print("Starting room")
        Location = "A1"
    elif Command.lower() == "s":
        print("You can't go that way")
        Location = "B1"
    elif Command.lower() == "e":
        print("You are in a corridor, a torch lights the hall")
        Location = "B2"
    elif Command.lower() == "w":
        print("You can't go that way")
        Location = "B1"

2 个答案:

答案 0 :(得分:0)

你应该将整个shebang包裹在while循环中。现在你的代码执行以下操作......

  1. 介绍
  2. 运行房间A1逻辑
  3. 运行房间B1逻辑
  4. 退出
  5. 在最后一次while循环不再为真之后,没有更多的代码可以去(并且没有办法让它回到A1循环)。

    看看你的代码,你已经做过一次了!

    Command = ''
    while Command.lower() != 'exit':
        print("For a full list of commands type [help]")
        Command = input()
        if Command.lower() == "help":
            ...
        # elif Command == ''
        # put the rest of your logic here.
    

    对主命令循环使用完全相同的模式。

    {{1}}

答案 1 :(得分:0)

你应该把一段代码放在一起,你可以在另外一个大循环中获取和评估命令。类似的东西:

while IsCharacterAlive:
    Command = input()
    ...