将网格位置增加一个数字,随机拆分等于该数字的 x 和 y
Increase Grid position by a number, randomly split over x & y that equal that number
我使用 pygame 创建了一个路径查找算法 visuliser,它显示了 A* Vs。 Dijkstra 算法。
起始节点、结束节点和障碍物都是随机放置的
def generate_num(x, y):
return randint(x, y)
....
....
for x in range(0, density):
row_pos = generate_num(0, rows - 1)
col_pos = generate_num(0, rows - 1)
node = grid[row_pos][col_pos]
if not start and node != end:
start = node
start.makeStartNode()
elif not end and node != start:
end = node
end.makeEndNode()
elif node != end and node != start:
node.makeObstacle()
为了评估,我的算法限制了开始节点和结束节点之间的距离(对于小型、中型和大型),因此需要使结束节点例如 (10,30,50) 个网格块远离.
但是我不希望它均匀分布 grid[x][y]
我希望它是随机的。
因此,如果距离设置为 50,grid[x][y]
可以是 grid[17][33]
或 grid[10][40]
或 grid[25][25]
,但加起来总是相距 50 个节点
makexxxNode()
函数只是改变了节点的颜色以直观地识别其类型。
就像@hilberts_drinking_problem所说的那样简单 y = 50 - x
因为 x 是随机数。
我使用 pygame 创建了一个路径查找算法 visuliser,它显示了 A* Vs。 Dijkstra 算法。
起始节点、结束节点和障碍物都是随机放置的
def generate_num(x, y):
return randint(x, y)
....
....
for x in range(0, density):
row_pos = generate_num(0, rows - 1)
col_pos = generate_num(0, rows - 1)
node = grid[row_pos][col_pos]
if not start and node != end:
start = node
start.makeStartNode()
elif not end and node != start:
end = node
end.makeEndNode()
elif node != end and node != start:
node.makeObstacle()
为了评估,我的算法限制了开始节点和结束节点之间的距离(对于小型、中型和大型),因此需要使结束节点例如 (10,30,50) 个网格块远离.
但是我不希望它均匀分布 grid[x][y]
我希望它是随机的。
因此,如果距离设置为 50,grid[x][y]
可以是 grid[17][33]
或 grid[10][40]
或 grid[25][25]
,但加起来总是相距 50 个节点
makexxxNode()
函数只是改变了节点的颜色以直观地识别其类型。
就像@hilberts_drinking_problem所说的那样简单 y = 50 - x
因为 x 是随机数。