Mercurial > mamba
changeset 78:b1019923cb12
Direction control for snake.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 18:29:49 +0200 |
parents | 2aa652b92449 |
children | f602a8c3d173 |
files | mamba/habitats/level.py mamba/snake.py mamba/world.py |
diffstat | 3 files changed, 49 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/habitats/level.py Sun Sep 11 18:30:19 2011 +0200 +++ b/mamba/habitats/level.py Sun Sep 11 18:29:49 2011 +0200 @@ -1,23 +1,39 @@ """Where a level object hides.""" -from pygame.locals import KEYDOWN +from pygame.locals import KEYDOWN, K_LEFT, K_RIGHT, K_UP, K_DOWN from mamba.constants import ESCAPE_KEYS from mamba.engine import Habitat, NewHabitatEvent +from mamba.world import World from mamba.widgets.level import LevelWidget +from mambe.snake import Snake from mamba.level import Level class LevelHabitat(Habitat): def __init__(self, level_name): super(LevelHabitat, self).__init__() - self.level = Level(level_name) - self.level_widget = LevelWidget(self.level) - self.container.add(self.level_widget) + level = Level(level_name) + level_widget = LevelWidget(level) + self.container.add(level_widget) self.container.add_callback(KEYDOWN, self.keydown_event) + self.world = World(level) + self.actions = self.create_action_map() + + def create_action_map(self): + actions = {} + actions[K_LEFT] = (self.world.snake.set_orientation, (Snake.LEFT,)) + actions[K_RIGHT] = (self.world.snake.set_orientation, (Snake.RIGHT,)) + actions[K_DOWN] = (self.world.snake.set_orientation, (Snake.DOWN,)) + actions[K_UP] = (self.world.snake.set_orientation, (Snake.UP,)) + return actions def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: from mamba.habitats.mainmenu import MainMenu NewHabitatEvent.post(MainMenu()) return True + elif ev.key in self.actions: + func, args = self.actions[ev.key] + func(*args) + return True
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mamba/snake.py Sun Sep 11 18:29:49 2011 +0200 @@ -0,0 +1,19 @@ +"""The player snake object.""" + +from mamba.sprite import BaseSprite + + +class Snake(BaseSprite): + + UP, DOWN, LEFT, RIGHT = range(4) + + def __init__(self, tile_pos, orientation): + super(Snake, self).__init__("snake/" + "snake-head-mouth-open-r.png") + self.set_tile_pos(tile_pos) + self.set_orientation(orientation) + + def set_orientation(self, orientation): + self._orientation = orientation + print ["UP", "DOWN", "LEFT", "RIGHT"][orientation] + # TODO: update image
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mamba/world.py Sun Sep 11 18:29:49 2011 +0200 @@ -0,0 +1,10 @@ +"""World state (level, plus snake, plus other sprites).""" + +from mamba.snake import Snake + + +class World(object): + def __init__(self, level): + self.level = level + tile_pos, orientation = level.get_entry() + self.snake = Snake(tile_pos, orientation)