को गति दें मैंने अपने पहले थोड़ा-जटिल एल्गोरिदम को कोड किया है, A Star Pathfinding एल्गोरिदम का कार्यान्वयन। मैंने ग्राफ़ को कार्यान्वित करने पर कुछ Python.org advice का पालन किया ताकि एक शब्दकोश में प्रत्येक नोड को भी जुड़े हुए सभी नोड्स शामिल हों। अब, चूंकि यह सब एक गेम के लिए है, इसलिए प्रत्येक नोड वास्तव में नोड्स के ग्रिड में सिर्फ एक टाइल है, इसलिए मैं कैसे ह्युरिस्टिक और मेरे प्रासंगिक संदर्भ में काम कर रहा हूं।पायथन - एक स्टार पाथफाइंडिंग एल्गोरिदम
समय के लिए धन्यवाद मुझे पता है कि मैं इस समारोह को एक सौ बार एक से अधिक बार सफलतापूर्वक चला सकता हूं। समझ में आता है कि यह मुझे थोड़ा असहज बनाता है, यह किसी भी अन्य 'गेम स्टफ' के बिना ग्राफिक्स या गेम लॉजिक की गणना करने के बिना है। तो मुझे यह देखना अच्छा लगेगा कि आप में से कोई भी मेरे एल्गोरिदम को तेज कर सकता है, मैं साइथन या उसके रिश्तेदारों से पूरी तरह से अपरिचित हूं, मैं सी
किसी भी रैंपिंग के बिना कोड नहीं कर सकता, यहां मेरा ए है स्टार समारोह
def aStar(self, graph, current, end):
openList = []
closedList = []
path = []
def retracePath(c):
path.insert(0,c)
if c.parent == None:
return
retracePath(c.parent)
openList.append(current)
while len(openList) is not 0:
current = min(openList, key=lambda inst:inst.H)
if current == end:
return retracePath(current)
openList.remove(current)
closedList.append(current)
for tile in graph[current]:
if tile not in closedList:
tile.H = (abs(end.x-tile.x)+abs(end.y-tile.y))*10
if tile not in openList:
openList.append(tile)
tile.parent = current
return path
'जबकि लेन (openList) 0 नहीं है:' मुझे चापलूसी ... बनाता है 'जबकि openlist:' एक ही करता है। –
लाइन 'रिटर्न रीट्रेसपैथ (वर्तमान)' गलत है (मुझे लगता है), आप shoudl कॉल 'retracePath (current)', फिर वर्तमान में 'वापसी पथ' अगर अंत नोड पाया जाता है, तो यह 'कोई नहीं' –