+
+ def _in_dead_end(self, level):
+ # Check if this is a dead end
+ blocked = 0
+ for direction in [(1, 0), (-1, 0), (0, -1), (0, 1)]:
+ new_pos = (self.pos[0] + direction[0], self.pos[1] + direction[1])
+ if level.is_wall(new_pos) or new_pos in self._deadends:
+ blocked += 1
+ # A dead end has only 1 exit, and recurse back from there
+ return blocked >= 3