moze=[
[1,1,1,1,1,1,1,1,1,1],
[1,0,0,1,0,0,0,1,0,1],
[1,0,0,1,0,0,0,1,0,1],
[1,0,0,0,0,1,1,0,0,1],
[1,0,1,1,1,0,0,0,0,1],
[1,0,0,0,1,0,0,0,0,1],
[1,0,1,0,0,0,1,0,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,1,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1]
]
dirs = [
lambda x,y:(x+1,y),
lambda x,y:(x-1,y),
lambda x,y:(x,y-1),
lambda x,y:(x,y+1)
]
#输入一次xy,输出四个结果
def moze_path(x1,y1,x2,y2):
stack = []
stack.append((x1,y1))
while(len(stack)>0):
curNode = stack[-1]#当前位置 现在的x和y
#curNode 是一个长度为2的元组
# 上下左右:x-1,y:x+1,y;x,y-1;x,y+1;
if curNode[0] == x2 and curNode[1] == y2:
#走到终点
for p in stack:
print(p)
return True
for dir in dirs:
nextNode = dir(curNode[0],curNode[1])
#curNode[0]为x坐标 curNode[1]为y坐标
# 如果下一节点能走
if moze[nextNode[0]][nextNode[1]] == 0:
#变化后的位置---nextNode[0]][nextNode[1]
stack.append(nextNode)
moze[nextNode[0]][nextNode[1]] = 2 #2表示已经走过
break
else:
moze[nextNode[0]][nextNode[1]] = 2
stack.pop()
#栈顶出栈
else:
print("没有路")
return False
moze_path(1,1,8,8)
运行结果:
IndexError: pop from empty list