+ # First, if we're standing next to a gate, we attack it
+ neighbours = [(self.pos[0] + 1, self.pos[1]),
+ (self.pos[0] - 1, self.pos[1]),
+ (self.pos[0], self.pos[1] + 1),
+ (self.pos[0], self.pos[1] - 1)]
+ for cand in neighbours:
+ if level.is_gate(cand) and level.blocked(cand):
+ level.damage_gate(cand)
+ return
+ # check for dead-ends
+ if self._in_dead_end(level):
+ self._deadends.add(self.pos)
+ self._been.setdefault(self.pos, 0)
+ mindist = 999999
+ best_pos = None