# HG changeset patch # User Jeremy Thurgood # Date 1316034165 -7200 # Node ID af95fbc8ef5c32646ab92068a78ef749ffaafaea # Parent 0dfa3f52742b0307b008dbaf53df99871ec40038 Snakes should be impermeable. So now they are. diff -r 0dfa3f52742b -r af95fbc8ef5c mamba/snake.py --- a/mamba/snake.py Wed Sep 14 22:43:37 2011 +0200 +++ b/mamba/snake.py Wed Sep 14 23:02:45 2011 +0200 @@ -24,6 +24,7 @@ self.speed = 120.0 # pixel / s self.frac_ds = 0.0 self.mutation = None + self.coiled = True head = property(fget=lambda self: self.segments[0]) tail = property(fget=lambda self: self.segments[-1]) @@ -72,6 +73,7 @@ tile_state = self.head.get_tile_state() shifted, ds = self.head.shift_head(ds) if shifted: + self.coiled = False self.head.shifted_tile() else: break @@ -87,6 +89,7 @@ if not self.check_uturn(): self.head.set_orientation(self.orientation) + self.check_self_crash() for segment in self.segments: segment.shift_pixels(ds) world.interact(segment) @@ -106,6 +109,13 @@ def set_orientation(self, orientation): self.orientation = orientation + def check_self_crash(self): + if self.coiled: + return + collides = spritecollide(self.head, self.segment_group, False) + if [s for s in collides if s not in self.segments[:2]]: + self.crash() + def crash(self): SnakeDiedEvent.post()