首先,对于冗长的代码剪断感到抱歉,但我觉得所有代码都与理解问题有关。
我有一个grid.txt文件(请参阅以下链接)https://ufile.io/9e6hm 存储2d网格的单元格,填充0,100或-1。 0是空闲的,100和-1被占用。
我的A *必须找到从给定起点到目标的路径。
当我删除以下邻居条件以检查单元格是否被占用时,这可以正常工作:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn btn-success btn-sm startDocker">Start</button>
<button class="btn btn-success btn-sm startDocker">Start</button>
<button class="btn btn-success btn-sm startDocker">Start</button>
<button class="btn btn-success btn-sm startDocker">Start</button>
<button class="btn btn-success btn-sm startDocker">Start</button>
<button class="btn btn-success btn-sm startDocker">Start</button>
然而,当尝试计算考虑到被占用单元格的路径时,我的代码似乎不会产生结果。
我非常感谢任何帮助,因为我真的很想了解这个问题。我的代码如下:
if (world[yy][xx]!=0):
continue
答案 0 :(得分:1)
在尝试访问世界列表列表中的那些元素之后,您正在检查是否[xx],[yy]在界限中。因此,当xx和yy超出范围时,最终会得到IndexError: list index out of range
。
此外,您的maxx和maxy检查已关闭。如果您尝试访问world[maxy][maxx]
,您将始终以IndexError结束。
在访问列表元素之前确保事物处于界限中,你应该没问题:
xx = x + i
yy = y + j
if ( xx >= 0 and
yy >= 0 and
xx < maxx and
yy < maxy and
world[yy][xx] == 0 ):
n.append([xx,yy])