Mercurial > mamba
view mamba/widgets/game.py @ 186:275f0be6946c
Reincarnating Snakes
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 14 Sep 2011 16:28:03 +0200 |
parents | 119c0fb758c2 |
children | 926710da8854 |
line wrap: on
line source
"""Display the game area.""" from pygame.rect import Rect from pygame.locals import KEYDOWN, K_LEFT, K_RIGHT, K_DOWN, K_UP from mamba.widgets.base import Widget from mamba.snake import Snake from mamba.engine import SnakeDiedEvent class GameWidget(Widget): def __init__(self, world, offset=(0, 0)): self.world = world self.actions = self.create_action_map() rect = Rect(offset, world.get_size()) super(GameWidget, self).__init__(rect) self.focussable = True 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 event(self, ev): if ev.type == KEYDOWN and ev.key in self.actions: 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()