Ich habe Schwierigkeiten, Bewegung, die in meinem Python-Adventure-Spiel funktioniert. Wenn der Spieler läuft, kann er in einen anderen Raum gehen, aber wenn er versucht, in einen Raum zurückzukehren, stoppt der Code. HierWhile Loop-Bewegung in Zork-like Python-Spiel
ist der Code:
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"
Betrachten PEP8 (https://www.python.org/dev/peps/pep-0008/#prescriptive-naming-conventions) Namenskonventionen verwenden, solange es keinen Sinn macht, um es zu brechen. Mit Ihrem Code ist es für andere Programmierer schwer zu erkennen, ob sich ein Name auf eine Variable oder eine Klasse bezieht. –