我正在尝试创建一个蛇形算法,它本身就能击败游戏,我已经采用了哈密顿循环方法,具有创建快捷方式的能力,我试图通过使用寻路算法来创建循环,并计算最长的路径,其中蛇的头部是起点,尾部是终点,中间的两个块是墙,python中的寻路库使用一个矩阵来表示像素的地图,所以为了生成我的矩阵,我使用了以下代码块:
from pathfinding.core.grid import Grid
from pathfinding.finder.a_star import AStarFinder
from pathfinding.core.diagonal_movement import DiagonalMovement
matrix=[]
row=[]
yi=0
xi=0
while yi<800:
  if row != []:
    matrix.append(row)
    yi += 20
    row.clear()     #This causes crash
  while xi<1400:
    row.append(1)
    if  xi == 40 or xi == 60:
      if yi == 20:
        row.append(0)
    xi += 20
grid = Grid(matrix=matrix)
start = grid.node(4, 1)
end = grid.node(1, 1)
finder = AStarFinder(diagonal_movement=DiagonalMovement.always)
path, runs = finder.find_path(start, end, grid)
print('operations:', runs, 'path length:', len(path))
print(grid.grid_str(path=path, start=start, end=end))但每当我运行它时,它就会崩溃,我已经将它的范围缩小到row.clear()行,但我不知道为什么它会这样做,如果我删除它,就不会创建墙,其他清空列表的方法如:row=[]或
while i<len(row):
     row.remove(i)
     row += 1给我同样的结果,我没有得到错误消息,什么也没有打印,只是崩溃了,整个代码更清楚了,因为显示蛇的游戏的窗口没有显示任何东西,窗口崩溃窗口出现了,我使用的是windows 10,python 3.8.2
我是编程新手,所以请原谅我的低效代码,我这样做是为了好玩,性能给我带来一点乐趣,任何帮助都是非常感谢的
我希望我没有遗漏任何明显的东西,浪费您的时间,但只要我的代码被修复,我就是一个快乐的家伙。
谢谢
发布于 2021-05-16 22:10:40
事实证明,我真的很愚蠢,忘记添加xi = 0,这样它就可以再次开始缩进循环,而不是直接循环到无穷大
https://stackoverflow.com/questions/67540618
复制相似问题