Mercurial > mamba
changeset 186:275f0be6946c
Reincarnating Snakes
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 14 Sep 2011 16:28:03 +0200 |
parents | b93845471311 |
children | 3449b51ae944 |
files | mamba/level.py mamba/snake.py mamba/widgets/game.py mamba/world.py |
diffstat | 4 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/level.py Wed Sep 14 16:26:52 2011 +0200 +++ b/mamba/level.py Wed Sep 14 16:28:03 2011 +0200 @@ -206,3 +206,8 @@ if tile: orientation = self.get_tile_orientation(tile) tile.use_variant(*orientation) + + def restart(self): + """Reset the level state""" + self.setup_tiles(self.tiles_ascii) + self.make_background()
--- a/mamba/snake.py Wed Sep 14 16:26:52 2011 +0200 +++ b/mamba/snake.py Wed Sep 14 16:28:03 2011 +0200 @@ -5,6 +5,7 @@ from mamba.constants import TILE_SIZE from mamba.sprites import BaseSprite +from mamba.engine import SnakeDiedEvent from mamba import mutators @@ -60,6 +61,8 @@ def crash(self): print "I'm doomed!" + SnakeDiedEvent.post() + print 'event posted' def mutate(self, mutation): self.mutation = mutation
--- a/mamba/widgets/game.py Wed Sep 14 16:26:52 2011 +0200 +++ b/mamba/widgets/game.py Wed Sep 14 16:28:03 2011 +0200 @@ -5,6 +5,7 @@ from mamba.widgets.base import Widget from mamba.snake import Snake +from mamba.engine import SnakeDiedEvent class GameWidget(Widget): @@ -28,7 +29,15 @@ func, args = self.actions[ev.key] func(*args) return True + elif SnakeDiedEvent.matches(ev): + self.snake_died() + return True def draw(self, surface): self.world.update() self.world.draw(surface) + + def snake_died(self): + # Restart + self.world.restart() + self.actions = self.create_action_map()
--- a/mamba/world.py Wed Sep 14 16:26:52 2011 +0200 +++ b/mamba/world.py Wed Sep 14 16:28:03 2011 +0200 @@ -32,3 +32,9 @@ tile = self.level.get_tile(segment.tile_pos) if tile is not None and tile.alive: tile.interact(self.snake, segment) + + def restart(self): + self.level.restart() + tile_pos, orientation = self.level.get_entry() + self.snake = Snake(tile_pos, orientation) + self._prev = None