前言
产生本文的缘由
学校计科课程要求的小作业, 在csdn上看了好多, 记录一下自己的学习
以下是本篇文章正文内容
一、A*? A星
1.一个搜索算法
和深度搜索, 广度搜索类似, 能更快的找一条从起点到终点的路径.
我参考的算法文章来自 https://blog.csdn.net/hitwhylz/article/details/23089415
2.结果展示
圆圈表示地图坐标, 方块表示墙壁 , ※表示路径
二、使用环境
1.python 3.x
代码如下(示例):大家可以直接复制到一个.py文件里面直接运行即可
class Array2D:
"""
说明:
1.构造方法需要两个参数,即二维数组的宽和高
2.成员变量w和h是二维数组的宽和高
3.使用:‘对象[x][y]’可以直接取到相应的值
4.数组的默认值都是0
"""
def __init__(self, h, w):
self.w = w
self.h = h
self.data = []
self.data = [[0 for y in range(w)] for x in range(h)]
def showArray2D(self):
for x in range(self.h):
for y in range(self.w):
if self.data[x][y] == 0:
print("◎", end=' ')
elif self.data[x][y] == 1:
print("▉",end=' ')
else:
print("※",end=' ')
print("")
def __getitem__(self, item):
return self.data[item]
class Point:
"""
表示一个点
"""
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
if self.x == other.x and self.y == other.y:
return True
return False
def __str__(self):
return "x:"+str(self.x)+",y:"+str(self.y)
class AStar:
"""
AStar算法的Python3.x实现
"""
class Node: # 描述AStar算法中的节点数据
def __init__(self, point, endPoint, g=0):
self.point = point # 自己的坐标
self.father = None # 父节点
self.g = g # g值,g值在用到的时候会重新算
self.h = (abs