首页 > 解决方案 > 如何在迷宫中标记解决方案路径:在递归条件中处理“IF”条件“== True”

问题描述

我正在尝试复制这个解决方案: Maze solve with python

我唯一的目标是使用胡萝卜来显示迷宫内解决方案路径的方向。我已经解决了迷宫,但路径由一个字符(2)组成。我想用合适的胡萝卜代替它('>','v','<','^')

我的问题是:

if move(x + 1, y) == True:

因为我将递归函数作为 IF 条件的一部分来调用,所以它会在不确认“== True”条件的情况下不断循环 - 所以它不会返回“True”语句并忽略我的条件以替换为适当的胡萝卜。

如何强制它处理整个 IF 条件,包括“== True”。

示例输出:注意:它在 IF 条件中跳过打印语句(例如:“EAST IS TRUE”)。但是 - 它正在识别 else 语句(“EAST NOT TRUE)。

LOOP START:  X: 54 Y: 25
LOOP START:  X: 55 Y: 25
LOOP START:  X: 56 Y: 25
LOOP START:  X: 57 Y: 25
LOOP START:  X: 58 Y: 25
LOOP START:  X: 59 Y: 25
LOOP START:  X: 60 Y: 25
That is wall X: 60 Y: 25
EAST NOT TRUE X: 59 Y: 25
LOOP START:  X: 59 Y: 26
LOOP START:  X: 60 Y: 26
That is wall X: 60 Y: 26
...etc

我的代码:

def move(x, y):
    global FoundWayOut
    if FoundWayOut:
        return

    print('LOOP START: ' + ' X: ' + str(x) + ' Y: ' + str(y))


    if (x < 0 or x > width - 1 or y < 0 or y > height - 1):
        print('Out of bounds' + ' X: ' + str(x) + ' Y: ' + str(y)); return
    if (myMaze[y][x] == 7):
        FoundWayOut = True
        print('Got it!' + ' X: ' + str(x) + ' Y: ' + str(y)); return
    if (myMaze[y][x] == 1):
        print('That is wall' + ' X: ' + str(x) + ' Y: ' + str(y)); return
    if (myMaze[y][x] == 2):
        print('Was here before' + ' X: ' + str(x) + ' Y: ' + str(y)); return
    myMaze[y][x] = 2

    if move(x + 1, y):
        myMaze[y][x] = ">"
        print("EAST IS TRUE")
    else:
        print("EAST NOT TRUE" + " X: " + str(x) + " Y: " + str(y))

    if move(x, y + 1):
        myMaze[y][x] = "v"
        print("SOUTH IS TRUE")
    else:
        print("SOUTH NOT TRUE" + " X: " + str(x) + " Y: " + str(y))

    if move(x - 1, y):
        myMaze[y][x] = "<"
        print("WEST IS TRUE")
    else:
        print("WEST NOT TRUE" + " X: " + str(x) + " Y: " + str(y))

    if move(x, y - 1):
        myMaze[y][x] = "^"
        print("NORTH IS TRUE")
    else:
        print("NORTH NOT TRUE" + " X: " + str(x) + " Y: " + str(y))

如果条件为真,我期望的结果是字符被替换。

标签: pythonrecursionmaze

解决方案


推荐阅读