Exemplo n.º 1
0
class Solver:
    def __init__(self, name, heuristic, Open, Closed):
        self.name       = name
        self.heuristic  = heuristic
        self.Open       = Open
        self.Closed     = Closed
        self.openset    = None
        self.closedset  = None
        self.board      = None
        self.solution   = None
        self.path       = None

    def solve(self, board, root, goal):
        self.board      = board
        self.openset    = self.Open()
        self.closedset  = self.Closed()
        self.solution   = Searcher(self.openset, self.closedset, root, goal, self.heuristic)
        if self.solution.search():
            trace = self.solution.trace(self.solution.Goal)
            self.path = trace[0]
            print self.name + ' solved ' + board + ' with cost', trace[-1]
        else:
            print self.name + ' could not solve ' + board

    def visualize(self, world, steps, color):
        for pos in steps:
            world.drawDot(pos, color)
        #world.dump()

    def save(self):
        world.image.save('solutions/' + self.board + '-' + self.name + '.png', 'PNG')