summaryrefslogtreecommitdiffstats
path: root/character.py
diff options
context:
space:
mode:
authorraylu <ray.lu@getclever.com>2013-10-12 00:18:36 -0700
committerraylu <ray.lu@getclever.com>2013-10-12 00:22:07 -0700
commit7f233c72678e8e644ac85e952806da3c95265bfd (patch)
treef12545c185ca03574226f9a34267ad2716bd0767 /character.py
parent948aec96350b7db0cd689f7ef997d14e9f27253c (diff)
downloadtroll-7f233c72678e8e644ac85e952806da3c95265bfd.tar.xz
refactor character movement
Diffstat (limited to 'character.py')
-rw-r--r--character.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/character.py b/character.py
new file mode 100644
index 0000000..665bd19
--- /dev/null
+++ b/character.py
@@ -0,0 +1,43 @@
+import pygame
+
+from tileset import Tileset
+
+class Character(object):
+ movement = [0, 0]
+
+ def __init__(self, tilesize):
+ self.tilesize = tilesize
+ self.render_x = 0
+ self.render_y = 13*tilesize
+
+ def frame(self, keys):
+ # are we done moving?
+ if self.render_x % self.tilesize == 0:
+ self.movement[0] = 0
+ if self.render_y % self.tilesize == 0:
+ self.movement[1] = 0
+
+ SPEED = 2
+ direction = None
+ # can we start moving?
+ if self.movement[1] == 0:
+ if keys[pygame.K_DOWN]:
+ self.movement[1] = SPEED
+ direction = Tileset.DOWN
+ elif keys[pygame.K_UP]:
+ self.movement[1] = -SPEED
+ direction = Tileset.UP
+ if self.movement[0] == 0:
+ if keys[pygame.K_RIGHT]:
+ self.movement[0] = SPEED
+ if not self.movement[1]: # prefer up/down when moving diagonally
+ direction = Tileset.RIGHT
+ elif keys[pygame.K_LEFT]:
+ self.movement[0] = -SPEED
+ if not self.movement[1]:
+ direction = Tileset.LEFT
+
+ # move!
+ self.render_x += self.movement[0]
+ self.render_y += self.movement[1]
+ return direction