a* impl
This commit is contained in:
parent
39717d8860
commit
9b71d67b33
@ -1,4 +1,4 @@
|
|||||||
from Constants import ROWS, COLS
|
from Constants import ROWS, COLS, MOVE
|
||||||
from Engine.BfsPathFinder import BfsPathFinder
|
from Engine.BfsPathFinder import BfsPathFinder
|
||||||
from Engine.Node import Node
|
from Engine.Node import Node
|
||||||
from Engine.Point import Point
|
from Engine.Point import Point
|
||||||
@ -30,18 +30,19 @@ class PathFinder(BfsPathFinder):
|
|||||||
return self.constructActions(current, startState)
|
return self.constructActions(current, startState)
|
||||||
self.openList.remove(current)
|
self.openList.remove(current)
|
||||||
for next in self.getNeighbour(current):
|
for next in self.getNeighbour(current):
|
||||||
tentativeGScore = self.gScore.get(current) + current.state.getPoint().distance(next.state.getPoint())
|
tentativeGScore = self.gScore.get(current) + self.weight(next)
|
||||||
if tentativeGScore < self.gScore.get(next, 10000):
|
if tentativeGScore < self.gScore.get(next, 10000):
|
||||||
self.cameFrom[next] = current
|
self.cameFrom[next] = current
|
||||||
next.parent = current
|
next.parent = current
|
||||||
self.gScore[next] = tentativeGScore
|
self.gScore[next] = tentativeGScore
|
||||||
self.fScore[next] = tentativeGScore + next.state.getPoint().distance(startState.getPoint())
|
self.fScore[next] = tentativeGScore + self.heuristic(startState, next)
|
||||||
if next not in self.openList:
|
if next not in self.openList:
|
||||||
self.openList.append(next)
|
self.openList.append(next)
|
||||||
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def heuristic(self,startState,next):
|
||||||
|
return next.state.getPoint().distance(startState.getPoint())
|
||||||
|
|
||||||
def minKey(self, fscore, openlist):
|
def minKey(self, fscore, openlist):
|
||||||
minkey = Node
|
minkey = Node
|
||||||
@ -53,6 +54,12 @@ class PathFinder(BfsPathFinder):
|
|||||||
minkey = node
|
minkey = node
|
||||||
return minkey
|
return minkey
|
||||||
|
|
||||||
|
def weight(self, next):
|
||||||
|
if next.state.getPoint() in self.board.moodMap and next.action == MOVE:
|
||||||
|
return 5
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user