Mercurial > rinkhals
changeset 533:7addf41b6abb
Allow backtracking on ladders
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Fri, 27 Nov 2009 22:09:54 +0000 |
parents | 0667189a5973 |
children | d16ed2a8a33e |
files | gamelib/animal.py |
diffstat | 1 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/animal.py Fri Nov 27 21:28:20 2009 +0000 +++ b/gamelib/animal.py Fri Nov 27 22:09:54 2009 +0000 @@ -518,13 +518,19 @@ else: # Been bounced off the path self.path = [] + new_pos = None if self.target.z < self.pos.z: # We need to try heading down. - return Position(self.pos.x, self.pos.y, self.pos.z - 1) + new_pos = Position(self.pos.x, self.pos.y, self.pos.z - 1) if self.target.x == self.pos.x and self.target.y == self.pos.y and \ self.target.z > self.pos.z: # We try heading up - return Position(self.pos.x, self.pos.y, self.pos.z + 1) + new_pos = Position(self.pos.x, self.pos.y, self.pos.z + 1) + if new_pos: + if new_pos in self._last_steps: + # ladder, so we allow backtracking + self._last_steps.remove(new_pos) + return new_pos cur_dist = self.target.dist(self.pos) if cur_dist < 2: # We're right ontop of our target, so just go there @@ -688,8 +694,7 @@ # We've dug through the fence, so make a hole self._make_hole() return - else: - desired_pos = self._calc_next_move() + desired_pos = self._calc_next_move() final_pos = self._update_pos(desired_pos) self._fix_face(final_pos) self.pos = final_pos