python游戏寻路_python模拟实现A*寻路算法

一、简介

两点之间寻找最短路径,要考虑到存在障碍物遮挡和斜线移动的情况。

二、具体说明

说明可以参考下面的链接,对A*算法实现的描述。

三、具体实现

1、实现功能

15a93443ae4e68cfd14ee008f4664d87.png

2、寻路具体流程

033c720e63e1a030e5da41d4ff17bba3.png

3、关于F值

f = g + h

g表示当前移动到下一个点的消耗,平移为1,斜移动为 sqrt((x1-x2)**2 +(y1-y2)**2);

h表示当前移动到终点的消耗,不考虑斜移,不考虑障碍物

具体原理请查看下面的参考链接。

完整实现:

# -*- coding: utf-8 -*-

import os,sys,random,math

#地图设置

gameMapWidth = 10

gameMapHeight = 10

gameMap = []

#地图障碍物

obstacleCount = 5

#块状态

ITEM_STAT_NORMAL = 0 #空点

ITEM_STAT_OBSTACLE = 1 #障碍物

ITEM_STAT_START = 2 #起点

ITEM_STAT_END = 3 #终点

#起点和终点

spNum = -1

epNum = -1

#每块的属性

class Item:

def __init__(self,x,y,status):

self.x = x

self.y = y

self.status = status

self.mf = -1

self.mg = -1

self.mh = -1

self.mParent = None

self.isPath = 0

#初始化地图

def initMap():

for wc in xrange(gameMapWidth):

for hc in xrange(gameMapHeight):

gameMap.append(Item(wc,hc,ITEM_STAT_N

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值