python寻路_Python迷宫寻路

本文介绍了一种Python实现的迷宫寻路算法,通过gen_lee函数生成路径地图。算法考虑了地图边界和不可通行区域,并给出了无障碍物和有障碍物的例子。在有障碍物的情况下,可以通过从目标位置回溯找到最佳路径。
部署运行你感兴趣的模型镜像

据我所知,你从不检查你是否已经参观过广场。此外,您将使用x和y来表示非x,y坐标的值,并检查索引的一端并捕捉另一端的异常。这太复杂了。我的建议是实现实际的算法:def gen_lee(start, size, travelable):

neighbor_offsets = [(0, 1), (1, 0), (0, -1), (-1, 0)]

score = 0

path_map = [[None for _ in xrange(size)] for _ in xrange(size)]

node_list = [start]

path_map[start[0]][start[1]] = 0

for node in node_list:

score = path_map[node[0]][node[1]]

for neighbor_offset in neighbor_offsets:

neighbor_x = node[0] + neighbor_offset[0]

neighbor_y = node[1] + neighbor_offset[1]

if neighbor_x < 0 or \

neighbor_y < 0 or \

neighbor_x >= size or \

neighbor_y >= size:

continue # Skip out of map neighbors

if not travelable[neighbor_x][neighbor_y]:

continue # Skip untravelable neighbors

if path_map[neighbor_x][neighbor_y] is None:

node_list.append((neighbor_x, neighbor_y))

path_map[neighbor_x][neighbor_y] = score + 1

return path_map

利用此功能,我们可以生成路线栅格:

^{pr2}$

在没有障碍物的情况下,我们可以:for row in path_map:

print row

[2, 1, 2, 3, 4]

[1, 0, 1, 2, 3]

[2, 1, 2, 3, 4]

[3, 2, 3, 4, 5]

[4, 3, 4, 5, 6]

有障碍物:travelable = [[1, 1, 1, 0, 1],

[1, 1, 1, 0, 1],

[1, 1, 1, 0, 1],

[1, 1, 1, 0, 1],

[1, 1, 1, 1, 1]]

path_map = gen_lee((1, 1), 5, travelable)

我们得到:[2, 1, 2, None, 10]

[1, 0, 1, None, 9]

[2, 1, 2, None, 8]

[3, 2, 3, None, 7]

[4, 3, 4, 5, 6]

然后,你开始目标,然后一路往回走,找到比你目前得分低1分的邻居。这将产生一条最佳路径。(请注意,可能有多个满足此条件:您可以选择其中任何一个并找到等效路径)

如果在“查找路径”步骤的任何一点上,您找不到比您低一个的邻居(而且您还没有达到目标),则该路径将被阻止。在

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值