Changeset 34:2995723e8ccf
- Timestamp:
- 09/01/13 14:50:06 (7 years ago)
- Branch:
- default
- Phase:
- public
- Rebase:
- 38383638646162623762623364333839313664346235613534306663653761616232643861333736
- Location:
- nagslang/screens
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/screens/area.py
r27 r34 11 11 12 12 13 class ControlKeys(object): 14 def __init__(self): 15 self.keys_down = set() 16 17 def key_down(self, key): 18 self.keys_down.add(key) 19 20 def key_up(self, key): 21 self.keys_down.discard(key) 22 23 def handle_event(self, ev): 24 if ev.type == pygame.locals.KEYDOWN: 25 self.key_down(ev.key) 26 elif ev.type == pygame.locals.KEYUP: 27 self.key_up(ev.key) 28 29 13 30 class AreaScreen(Screen): 14 31 15 32 def setup(self, world): 33 self.keys = ControlKeys() 16 34 self.add_walls(world) 17 35 self.add_protagonist(world) … … 31 49 self.protagonist_body = pymunk.Body(100, 1000) 32 50 self.protagonist_body.position = (400, 300) 51 self.protagonist_body.velocity_limit = 5000 33 52 self.protagonist = pymunk.Circle(self.protagonist_body, 30) 34 53 self.space.add(self.protagonist_body, self.protagonist) 35 54 36 def protagonist_move(self, dx, dy, angle): 37 self.protagonist_body.angle = angle 38 self.protagonist_body.apply_impulse((dx * 2000, dy * 2000)) 55 def protagonist_move(self, dx, dy): 56 vec = pymunk.Vec2d((dx, dy)) 57 self.protagonist_body.angle = vec.angle 58 self.protagonist_body.apply_impulse((dx * 1000, dy * 1000)) 39 59 40 60 def handle_event(self, ev): … … 42 62 if ev.key == pygame.locals.K_ESCAPE: 43 63 ScreenChange.post('menu') 44 elif ev.key == pygame.locals.K_UP: 45 self.protagonist_move(0, 1, math.pi / 2) 46 elif ev.key == pygame.locals.K_DOWN: 47 self.protagonist_move(0, -1, -math.pi / 2) 48 elif ev.key == pygame.locals.K_LEFT: 49 self.protagonist_move(-1, 0, math.pi) 50 elif ev.key == pygame.locals.K_RIGHT: 51 self.protagonist_move(1, 0, 0) 64 self.keys.handle_event(ev) 52 65 53 66 def render(self, surface): … … 55 68 pymunk.pygame_util.draw(surface, *self.walls) 56 69 pymunk.pygame_util.draw(surface, self.protagonist) 70 71 def tick_protagonist(self): 72 dx, dy = 0, 0 73 for key, tx, ty in [ 74 (pygame.locals.K_UP, 0, 1), (pygame.locals.K_DOWN, 0, -1), 75 (pygame.locals.K_LEFT, -1, 0), (pygame.locals.K_RIGHT, 1, 0) 76 ]: 77 if key in self.keys.keys_down: 78 dx += tx 79 dy += ty 80 self.protagonist_move(dx, dy) 81 82 def tick(self, seconds): 83 self.tick_protagonist() 84 super(AreaScreen, self).tick(seconds) -
nagslang/screens/base.py
r20 r34 26 26 pass 27 27 28 def tick(self, s tep):28 def tick(self, seconds): 29 29 """Step the given amount of time.""" 30 self.space.step(s tep)30 self.space.step(seconds)
Note:
See TracChangeset
for help on using the changeset viewer.