diff nagslang/screens/area.py @ 25:e93eac7cf8c2

Consider a spherical werewolf.
author Simon Cross <hodgestar@gmail.com>
date Sun, 01 Sep 2013 15:57:07 +0200
parents 1b048d2a8411
children 3e4d8091268c
line wrap: on
line diff
--- a/nagslang/screens/area.py	Sun Sep 01 15:35:48 2013 +0200
+++ b/nagslang/screens/area.py	Sun Sep 01 15:57:07 2013 +0200
@@ -26,15 +26,26 @@
         self.space.add(*self.walls)
 
     def add_protagonist(self, world):
-        body = pymunk.Body(100, 1000)
-        body.position = (400, 300)
-        self.protagonist = pymunk.Circle(body, 30)
-        self.space.add(self.protagonist)
+        self.protagonist_body = pymunk.Body(100, 1000)
+        self.protagonist_body.position = (400, 300)
+        self.protagonist = pymunk.Circle(self.protagonist_body, 30)
+        self.space.add(self.protagonist_body, self.protagonist)
+
+    def protagonist_move(self, dx, dy):
+        self.protagonist_body.apply_impulse((dx * 2000, dy * 2000))
 
     def handle_event(self, ev):
         if ev.type == pygame.locals.KEYDOWN:
             if ev.key == pygame.locals.K_ESCAPE:
                 ScreenChange.post('menu')
+            elif ev.key == pygame.locals.K_UP:
+                self.protagonist_move(0, 1)
+            elif ev.key == pygame.locals.K_DOWN:
+                self.protagonist_move(0, -1)
+            elif ev.key == pygame.locals.K_LEFT:
+                self.protagonist_move(-1, 0)
+            elif ev.key == pygame.locals.K_RIGHT:
+                self.protagonist_move(1, 0)
 
     def render(self, surface):
         surface.fill(pygame.color.Color(0, 0, 0))