【发布时间】:2020-06-23 16:00:19
【问题描述】:
我正在尝试制作 Astar 算法的输入迷宫(寻找起点和目的地之间最短路径的算法,迷宫内可能会有一些堵塞, 它只输入一个代表阻塞的迷宫,如下所示)。
从 GUI 在每个按钮中使用 Click1 命令,
我打算得到这样的输出(我在 [3][2] 处插入了一个阻塞)。
1代表从头到尾寻找路径要避免的阻塞。
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
但我得到如下输出,我不明白为什么它会阻塞每一行的同一列
[[0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]
我在 App() 类的 init(): 中使用以下方法创建了迷宫:
def __init__(self, master,dimension,indexes):
self.maze=[[0]*self.dimension]*self.dimension
整个事情都在一个类 App() 中:
用于创建按钮网格并存储它们的引用
self.gid = []
for i in range(self.dimension):
row = []
Grid.rowconfigure(self.frame1, i + 1, weight=3)
for j in range(self.dimension):
Grid.columnconfigure(self.frame1, j + 1, weight=3)
btn=Button(self.frame1,command=lambda i=i, j=j: self.Click1(i, j))
btn.grid(sticky=N+S+E+W,padx=2,pady=2,ipadx=1,ipady=1)
row.append(btn)
row[-1].grid(row=i + 1, column=j+1)
self.gid.append(row)
同样在这个类中的 Click1 方法/命令:
def Click1(self, i, j):
self.indxes.append((i,j))
if len(self.indxes)==1:
self.gid[i][j]["bg"]="blue" #indicates start
elif len(self.indxes)==2:
self.gid[i][j]["bg"]="green" #indicates destinations
else:
self.gid[i][j]["bg"] = "black"
self.maze[i][j] = 1 #how I insert blockage within the maze
【问题讨论】:
标签: python-3.x list button tkinter a-star