I'm trying to make a pathfinding game using A* algorithm, then this error keeps appearing no matter what i do. it's said TypeError: 'NoneType' object is not iterable at "for m in self.get_neighbors(n):". Sorry for any spelling mistake, English is not my native language.
def astar(self,start,end):
open_set = set(start)
closed_set = set()
g = {} #store distance from starting node
parents = {} # parents contains an adjacency map of all nodes
#distance of starting node from itself is zero
g[start] = 0
#start_node is root node i.e it has no parent nodes
#so start_node is set to its own parent node
parents[start] = start
while len(open_set) > 0:
n = ()
#node with lowest f() is found
for v in open_set:
if len(n)<=0 or g[v] + self.heuristic(v,end) < g[n] + self.heuristic(n,end):
n = v
if n == end or self.check_move(n) == False:
pass
else:
for m in self.get_neighbors(n):
#nodes 'm' not in first and last set are added to first
#n is set its parent
if m not in open_set and m not in closed_set:
open_set.add(m)
parents[m] = n
g[m] = g[n] + 1
#for each node m,compare its distance from start i.e g(m) to the
#from start through n node
else:
if g[m] > g[n] + 1:
#update g(m)
g[m] = g[n] + 1
#change parent of m to n
parents[m] = n
#if m in closed set,remove and add to open
if m in closed_set:
closed_set.remove(m)
open_set.add(m)
if len(n)<=0:
print('Path does not exist!')
return None
# if the current node is the stop_node
# then we begin reconstructin the path from it to the start_node
if n == end:
path = []
while parents[n] != n:
path.append(n)
n = parents[n]
path.append(start)
path.reverse()
print('Path found')
return path
# remove n from the open_list, and add it to closed_list
# because all of his neighbors were inspected
open_set.remove(n)
closed_set.add(n)
print('Path does not exist!')
return None
def move_to_point(self,point):
start = self.get_start()
end = point
print(start,point)
return None