From 7f233c72678e8e644ac85e952806da3c95265bfd Mon Sep 17 00:00:00 2001 From: raylu Date: Sat, 12 Oct 2013 00:18:36 -0700 Subject: refactor character movement --- character.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 character.py (limited to 'character.py') 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 -- cgit v1.2.3