91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.01M
    文件類型: .py
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-09
  • 語言: Python
  • 標簽: 其他??

資源簡介

尋路.py

資源截圖

代碼片段和文件信息

#?一個小地圖的信息
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

????def?__str__(self):
????????return?“x:“?+?str(self.x)?+?“,y:“?+?str(self.y)

#?自動尋路
class?AStar:
????“““A*算法python“““

????class?Node:??#?描述AStar算法中的節點數據
????????def?__init__(self?point?endpoint?G=0):
????????????self.point?=?point??#?自己的位置(array)
????????????self.father?=?None??#?父節點
????????????self.G?=?G??#?g值,g值用到會重新計算
????????????self.H?=?(abs(endpoint.x?-?point.x)?+?abs(endpoint.y?-?point.y))?*?10

????def?__init__(self?map2d?startpoint?endpoint?passtag=96):
????????“““
????????構造A*算法的啟動條件
????????:param?map2d:?Array2D類型的尋路數組
????????:param?startPoint:?Point或二元組類型的尋路起點
????????:param?endPoint:?Point或二元組類型的尋路終點
????????:param?passTag:?int類型的可行走標記(若地圖數據!=passTag即為障礙)
????????“““
????????#?開啟表
????????self.openlist?=?[]
????????#?關閉表
????????self.closelist?=?[]
????????#?尋路的地圖
????????self.map2d?=?map2d
????????self.width?self.height?=?map2d.shape[:2]

????????#?起點終點
????????if?isinstance(startpoint?Point)?and?isinstance(endpoint?Point):
????????????self.startpoint?=?startpoint
????????????self.endpoint?=?endpoint
????????else:
????????????self.startpoint?=?Point(*startpoint)
????????????self.endpoint?=?Point(*endpoint)

????????#?不可行走標記
????????self.passtag?=?passtag

????def?getMinNode(self):
????????“““獲得poenlist中F值最小的節點“““
????????cur_node?=?self.openlist[0]
????????for?node?in?self.openlist:
????????????if?node.G?+?node.H?????????????????cur_node?=?node
????????return?cur_node

????#?判斷自己坐標在不在關閉表
????def?pointCloseList(self?point):
????????for?node?in?self.closelist:
????????????if?node.point?==?point:
????????????????return?True
????????return?False

????#?查找開啟表中有沒有自己的坐標
????def?pointOpenList(self?point):
????????for?node?in?self.openlist:
????????????if?node.point?==?point:
????????????????return?node
????????return?None

????#?判斷是否是終點
????def?endPointCloseList(self):
????????for?node?in?self.openlist:
????????????if?node.point?==?self.endpoint:
????????????????return?node
????????return?None

????def?searchNode(self?minF?offset_x?offset_y):
????????“““
????????搜索節點周圍的點
????????:param?minF:F值最小的節點
????????:param?offset_x:坐標偏移量
????????:param?offset_y:
????????:return:
????????“““

????????#?越界檢測
????????if?minF.point.x?+?offset_x?????????????????or?minF.point.x?+?offset_x?>?self.width?-?1?\
????????????????or?minF.point.y?+?offset_y?????????????????or?minF.point.y?+?offset_y?>?self.height?-

評論

共有 條評論