Member 12894795 Ответов: 0

Как я могу распечатать решение пути в лабиринте на языке Python?


Привет, я создаю программу-решатель лабиринтов на Python. Я могу заставить лабиринт напечатать перед решением, но я не могу заставить его напечатать, показывая решение лабиринта. До сих пор я не получаю никаких ошибок.

Что я уже пробовал:

#read MAZE
import sys

mazeFile = open("maze01.txt", 'r')

tokens = mazeFile.readline().split()
rows = int(tokens[0])
cols = int(tokens[1])
enterRow = int(tokens[2])
enterCol = int(tokens[3])
exitRow = int(tokens[4])
exitCol = int(tokens[5])


def readMaze(maze, filename):               #read maze file
    mazeFile = open(filename, "r")
    columns = mazeFile.readlines()
    for j in columns:                   #make list of lists
        j = j.strip()
        i = [n for n in j]
        maze.append(i)

def solve(maze, start, r, c):
    if c > len(maze) or r > len(maze[c]):
        return False

    if maze[c][r] == 'E':
        return True

    if maze[c][r] != ' ':
        return False

    bc = 'o'

    maze[c,r] = bc

    if maze.solveMaze(r + 1, c) == True:
        bc = '>'
    elif maze.solveMaze(r, c + 1) == True:
        bc = 'v'
    elif maze.solveMaze(r - 1, c) == True:
        bc = '<'
    elif maze.solveMaze(r, c - 1) == True:
        bc = '^'
    else:

        bc = ' '

    maze[c,r] = bc
    return (bc != ' ')


maze = [ ]
readMaze(maze, "maze01.txt")

maze.pop(0)

maze[enterRow][enterCol] = 'S'
maze[exitRow][exitCol] = 'E'

for r in range(rows):
        for c in range(cols):
            if maze[r][c] == 'S':
                start = maze[enterRow][enterCol]
            if maze[r][c] == 'E':
                end = maze[exitRow][exitCol]


solve(maze, start, r, c)
start = maze[enterRow][enterCol]
end = maze[exitRow][exitCol]

print("Here's the maze: \n")
for sublist in maze:                #print maze line by line
    print(''.join(sublist))




#E###
# # #
# # #
#   #
#S###

0 Ответов