一个* python麻烦,从未找到目标

时间:2017-10-25 13:16:51

标签: python path artificial-intelligence a-star shortest

首先,对于冗长的代码剪断感到抱歉,但我觉得所有代码都与理解问题有关。

我有一个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

1 个答案:

答案 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])