import pygame from tileset import Tileset class Character(object): movement = [0, 0] def __init__(self, start_pos): self.render_x, self.render_y = start_pos self.render_x *= Tileset.TILESIZE self.render_y *= Tileset.TILESIZE def frame(self, keys): # are we done moving? if self.render_x % Tileset.TILESIZE == 0: self.movement[0] = 0 if self.render_y % Tileset.TILESIZE == 0: self.movement[1] = 0 SPEED = 2 direction = None # can we start moving? if self.movement[1] == 0: if keys[pygame.K_DOWN] or keys[pygame.K_j]: self.movement[1] = SPEED direction = Tileset.DOWN elif keys[pygame.K_UP] or keys[pygame.K_k]: self.movement[1] = -SPEED direction = Tileset.UP if self.movement[0] == 0: if keys[pygame.K_RIGHT] or keys[pygame.K_l]: self.movement[0] = SPEED if not self.movement[1]: # prefer up/down when moving diagonally direction = Tileset.RIGHT elif keys[pygame.K_LEFT] or keys[pygame.K_h]: 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