# HG changeset patch # User Simon Cross # Date 1301941394 -7200 # Node ID 2e913a89e69de26432cb4254cad96db9dd559f3f # Parent b502e732f8212cddaf96acab7167c3f3d7c1efd4 Link up key presses to calls to action functions on player and to quitting level. diff -r b502e732f821 -r 2e913a89e69d skaapsteker/levelscene.py --- a/skaapsteker/levelscene.py Mon Apr 04 19:34:20 2011 +0200 +++ b/skaapsteker/levelscene.py Mon Apr 04 20:23:14 2011 +0200 @@ -5,9 +5,20 @@ import physics import sprites.player import pygame +from pygame.locals import KEYDOWN, K_UP, K_DOWN, K_LEFT, K_RIGHT, K_x, K_z, \ + K_q, K_ESCAPE class LevelScene(engine.Scene): + KEY_TO_PLAYER_ACTION = { + K_LEFT: 'action_left', + K_RIGHT: 'action_right', + K_UP: 'action_up', + K_DOWN: 'action_down', + K_x: 'action_fire1', + K_z: 'action_fire2', + } + def __init__(self, leveldef, player=None): if not player: self._player = sprites.player.Player() @@ -25,6 +36,18 @@ self._world.add(sprite) self._world.add(self._player) + self._build_action_map() + + def _build_action_map(self): + self._key_map = {} + for key, action in self.KEY_TO_PLAYER_ACTION.items(): + self._key_map[key] = getattr(self._player, action) + for key in [K_q, K_ESCAPE]: + self._key_map[key] = self._quit + + def _quit(self): + import menuscene # avoid circular import + engine.ChangeScene.post(menuscene.MenuScene()) def draw(self, screen_surface): self._world.update() @@ -38,6 +61,7 @@ screen_surface.blit(self._level_surface, (0, 0), clip_rect) def dispatch(self, ev): - # handle events here! - self._player.dispatch(ev) - pass + if ev.type is KEYDOWN: + action = self._key_map.get(ev.key) + if action is not None: + action() diff -r b502e732f821 -r 2e913a89e69d skaapsteker/sprites/player.py --- a/skaapsteker/sprites/player.py Mon Apr 04 19:34:20 2011 +0200 +++ b/skaapsteker/sprites/player.py Mon Apr 04 20:23:14 2011 +0200 @@ -42,9 +42,23 @@ self.starting_tile_pos = pos self.rect = self.image.get_rect(topleft=(pos[0]*TILE_SIZE[0], pos[1]*TILE_SIZE[1])) + def action_left(self): + print "L" - def dispatch(self, ev): - pass + def action_right(self): + print "R" + + def action_up(self): + print "U" + + def action_down(self): + print "D" + + def action_fire1(self): + print "F1" + + def action_fire2(self): + print "F2" def _get_action(self): if self.running: @@ -53,7 +67,6 @@ return 'jumpin' return 'standing' - def _make_key(self, action=None): if action is None: action = self._get_action()