from PIL import Image
import numpy
import matplotlib
import matplotlib.pyplot as plt
def Draw(list01):
for i in range(list01):
X=list01[i][0]
Y=list01[i][1]
plt.scatter(X, Y, s=5)
plt.show()
def Solution():
list01 = [start]
# 定义循环,让它走
# 列表里最后存的就是下一步走的地方,当前列表有东西才能继续走
while list01:
# 当前走到的节点是哪一个节点,也就是最后走的一步,是哪一步,去列表的最后的一个值就是索引-1
now = list01[-1]
if now == end: # 如果现在的now等于我们之前定义的终点end
Draw(list01);
print(“走出迷宫”)
break
row, col = now
# python 里的解构也叫解包 now包括两个位置,一个行,一个列
mapp[row][col] = 2
# 这个代表就是走过的点,为2,因为你走过的路是不能再走的,除了走不通返回的时候,也就是为了走不通按原来走过的路原路返回
# continue 结束本次循环,从新开始判断走路
if mapp[row - 1][col] == 0:
# 上方可以走
list01.append((row - 1, col))
continue
elif mapp[row][col + 1] == 0:
# 右方可以走
list01.append((row, col + 1))
continue
elif mapp[row + 1][col] == 0:
# 下方可以走
list01.append((row + 1, col))
continue
elif mapp[row][col - 1] == 0:
# 左方可以走
list01.append((row, col - 1))
continue
else: # 走不通过,直接循环干掉每一步,重新调整路线
list01.pop()
image = Image.open(r"C:\User\DS\Desktop\路径.bmp") #图片的地址
mapp= numpy.array(image);
m,n=numpy.shape(mapp);
start=[0,0]
end=[0,0];
for y in range(image.size[1]):
for x in range(image.size[0]):
pix = image.getpixel((x,y))
if(pix==(255,0,0)):
start[0]=x
start[1]=y
elif(pix==(0,0,255)):
end[0]=x
end[1]=y
if(start==[0,0]or end==[0,0]):
print(“不符合要求”)
exit();
Solution();