outstripа вы вставляли так как на форум отправили? с
а все равно выдает ошибку- Прямой доступ к лабиринту запрещен.
maze_example1 = { 'm': [ [0,0,0,1,1,0,1,1,0,0,0], [0,1,0,0,0,0,0,0,0,1,0], [0,1,0,1,1,1,1,1,0,1,0], [0,0,0,1,0,0,0,1,0,0,0], [0,0,1,1,0,0,0,1,1,0,0], [0,0,1,0,0,0,0,0,1,0,0], [0,0,1,0,1,0,1,0,1,0,0], [0,0,1,0,0,0,0,0,1,0,0], [0,0,1,1,1,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,1,0,1,0,1,0,1,0,0], ], 's': (0,5), 'f': (4,5) }
maze_runner = MazeRunner(maze_example1['m'], maze_example1['s'], maze_example1['f']) maze_controller(maze_runner) print maze_runner.found()
попробуйте так
import time def print_maze(maze,x,y): for i in range(len(maze)): s = '' for j in range(len(maze)): if i == x and j == y: s += 'X' elif maze[i][j] == 1: s += '1' else: s += '.' print s print ' ' class MazeRunner(object): def __init__(self, maze, start, finish): self.__maze = maze self.__rotation = (1,0) self.__x = start[0] self.__y = start[1] self.__finish = finish def go(self): x = self.__x + self.__rotation[0] y = self.__y + self.__rotation[1] if x > len(self.__maze)-1 \ or y > len(self.__maze)-1 \ or x < 0 or y < 0 \ or self.__maze[x][y] == 1: return False self.__x = x self.__y = y print_maze(self.__maze, self.__x, self.__y) time.sleep(0.2) print(chr(27) + "[2J") return True def turn_left(self): left_rotation = { (0,1): (1,0), (1,0): (0,-1), (0,-1): (-1,0), (-1,0): (0,1), } self.__rotation = left_rotation[self.__rotation] return self def turn_right(self): right_rotation = { (1,0): (0,1), (0,-1): (1,0), (-1,0): (0,-1), (0,1): (-1,0), } self.__rotation = right_rotation[self.__rotation] return self def found(self): return self.__x == self.__finish[0] and self.__y == self.__finish[1] def maze_controller(mr): while not(mr.found()): if mr.go(): if mr.found()==False: mr.turn_right() if mr.go(): if mr.found()==False: mr.go() mr.go() else: mr.turn_left() mr.turn_left() if mr.go(): mr.found() else: mr.turn_right() else: mr.turn_left() if mr.go(): mr.found() else: mr.turn_right() mr.turn_right()
P.S. я точно не знаю, так как помог только аписать функцию, а что и как там вставлется я не знаю