python寻找地图上最短路线_python游戏地图最短路径求解

本文介绍了一种使用Python解决游戏地图中从起点到目标点最短路径的问题。通过设置矩阵模拟地图,利用宽度优先搜索(BFS)策略进行路径寻找。程序首先初始化地图,然后从起点开始扩展,直到找到目标点或确定无法到达。同时,还提供了从目标点反向寻找最短路径的函数。最终,通过实例展示了算法的运行结果和最短路径的矩阵表示。
摘要由CSDN通过智能技术生成

一.题目要求

参考下图完成游戏地图中从起点到目标点的最短路径寻找问题。

二.设计思路

先对游戏地图做了几个设定,以矩阵来模拟游戏地图。将可行的区域位置赋值0,障碍区赋值为inf。考虑到地图大小,将起始点和终点区域赋值99。

从Start点A开始向外层扩展,每扩展一层pathlen加一。List Q存储当前需要扩展的点,list P 存储当前扩展层。当扩展到End点B时扩展结束,路径可规划。当Q为空时,本次层扩展结束,检查P,若P非空,从P层向外扩展,若P为空,则End点B无法到达。

寻找最短路径时,从End点B开始,寻找当前点附近8个点的标记中比当前点标记小的点,直到标记为1为止。

三.程序主体

# -*-coding:gbk -*-

from numpy import *

dirs = [(1,1),(1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1)] # 四邻位置:从右下角开始顺时针得到,是按坐标差得到的

def find_path(oldmap,A,B):

oldmap[A[0], A[1]] = 99

oldmap[B[0], B[1]] = 99

[a,b]=oldmap.shape

pathmap=oldmap.copy()

Q=[]#存储扩展节点

P=[]#往外一层

pathlen=1

if A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值