Mercurial > mamba
view mamba/habitats/level.py @ 78:b1019923cb12
Direction control for snake.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 18:29:49 +0200 |
parents | 095914aee329 |
children | f602a8c3d173 |
line wrap: on
line source
"""Where a level object hides.""" 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__() 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