Ein wenig Hintergrund:Wie Indexerror vermeiden
Ich bin ein kleines Wort basierte Labyrinth-Spiel mit einem einfachen Labyrinth von X, O und F.
Mein Labyrinth gemacht Start Schreiben ist eine Liste Listen, die das Labyrinth selbst darstellen, wobei X eine Wand ist, O ist ein offener Punkt und F ist die Ziellinie.
Ich versuche, eine Funktion zu schreiben, die den Namen des Irrgartens und der aktuellen Position des Benutzers nimmt und eine Liste aller legalen Bewegungen von dieser Position (N, S, E oder W) zurückgibt.
Hier ist meine Praxis Labyrinth und Funktion.
def get_legal_directions(maze, position):
x = position[0]
y = position[1]
legal = []
if maze[x-1][y] == 'O' or maze[x-1][y] == 'F':
legal.append('N')
if maze[x+1][y] == 'O' or maze[x+1][y] == 'F':
legal.append('S')
if maze[x][y+1] == 'O' or maze[x][y+1] == 'F':
legal.append('E')
if maze[x][y-1] == 'O' or maze[x][y-1] == 'F':
legal.append('W')
return legal
>>> maze1 = [['X', 'X', 'X', 'X', 'X'], ['X', 'O', 'X', 'F', 'X'], ['X', 'O', 'X', 'O', 'X'], ['X', 'O', 'O', 'O', 'X'], ['X', 'X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X']]
>>>
Eingang: get_legal_directions(maze1, (1,1))
Ausgang: ['S']
so erscheint die Funktion normal, hier zu arbeiten, aber wenn ich die Funktion innerhalb einer anderen Funktion, damit der Benutzer mit dem Labyrinth zu interagieren , bekomme ich diese:
def interact():
maze = raw_input('Maze File: ')
x = maze[0]
y = maze[1]
pos = (1,1)
history = [pos]
while 1:
print 'You are at position', pos
command = raw_input('Command: ')
if command == 'Q':
com = raw_input('Are you sure you want to quit? [y] or [n]: ')
if com =='y':
print 'Thank you for playing - Goodbye!'
break
else: continue
elif command == 'L':
get_legal_directions(maze, pos)
else: print 'invalid command'
ich folgendes erhalten:
Ist etwas falsch mit der Art, wie ich die if-Anweisung geschrieben habe, oder ist es etwas anderes? Danke an alle, die helfen können. Wie kann ich den Befehl L
erhalten, um die Funktion get_legal_directions()
aufzurufen?
Sie haben den Stack-Trace weggelassen. –