在Python中绘制迷宫图形
嘿,我想用Python中的字典来画一个图。我有一个包含迷宫的txt
文件,里面用“b”表示墙壁,用“a”表示通路。我想做一个字典,列出在迷宫中所有可能的移动(就是简单的步骤,不是完整的路径)。你有什么建议我该从哪里开始吗?我之前从来没有用过字典。
非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我是从一个有效的房子开始,检查所有可能的路径。之后我还得移动到另一个房子,检查那里的路径。我该怎么确保不陷入无限循环,或者重新检查已经检查过的房子呢?
2 个回答
1
非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始,检查所有可能的路径。之后我需要移动到另一个房子,检查那里的路径。我该如何确保不陷入无限循环,或者重新检查已经检查过的房子呢?
创建一个“房子”类,并为它设置坐标:
class House(object):
def __init__(self, pos):
self.pos = pos # the coordinates (position) on the grid, a tuple
self.paths = [] # Empty array to hold paths
创建一些房子:
houses = [House((1,3)), House((3,3)), House((4,3))] # a list of houses
现在,逐个检查每个房子,计算它的路径:
paths = {}
paths[(1,3)] = [(2,3), (4,3) ... ] # possible paths to the point (1,3)
for i in houses:
try:
i.paths = paths[(i.pos)]
except KeyError:
print "I don't know how to get to ", i.pos
逐步遍历这个列表可以确保你每个房子只检查一次。现在你可以找出那些无法到达的房子:
for i in houses:
if not i.paths:
print "I did not find a way to reach the house at ",i.pos
4
假设你的迷宫看起来像一个网格,迷宫中的一个位置可以用一个元组(行,列)来表示。当你创建字典时,为迷宫中的每个位置都建立一个条目,初始值是一个空列表。在迷宫中每个有效的位置(r,c),你需要判断能否到达(r-1,c)、(r,c-1)、(r+1,c)和(r,c+1)。如果可以到达,就把这个元组添加到列表中。比如说,我可以从(r,c)到达(r-1,c)和(r,c+1),那么字典中的条目就会像这样:
maze_dict[(r,c)] = [(r-1,c), (r,c+1)]
要创建一个空字典,你可以使用:
maze_dict = {}
你还可以看看Python教程中的字典部分。