character.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pygame
  2. from tileset import Tileset
  3. class Character(object):
  4. movement = [0, 0]
  5. def __init__(self, start_pos, tilesize):
  6. self.tilesize = tilesize
  7. self.render_x, self.render_y = start_pos
  8. self.render_x *= tilesize
  9. self.render_y *= tilesize
  10. def frame(self, keys):
  11. # are we done moving?
  12. if self.render_x % self.tilesize == 0:
  13. self.movement[0] = 0
  14. if self.render_y % self.tilesize == 0:
  15. self.movement[1] = 0
  16. SPEED = 2
  17. direction = None
  18. # can we start moving?
  19. if self.movement[1] == 0:
  20. if keys[pygame.K_DOWN] or keys[pygame.K_j]:
  21. self.movement[1] = SPEED
  22. direction = Tileset.DOWN
  23. elif keys[pygame.K_UP] or keys[pygame.K_k]:
  24. self.movement[1] = -SPEED
  25. direction = Tileset.UP
  26. if self.movement[0] == 0:
  27. if keys[pygame.K_RIGHT] or keys[pygame.K_l]:
  28. self.movement[0] = SPEED
  29. if not self.movement[1]: # prefer up/down when moving diagonally
  30. direction = Tileset.RIGHT
  31. elif keys[pygame.K_LEFT] or keys[pygame.K_h]:
  32. self.movement[0] = -SPEED
  33. if not self.movement[1]:
  34. direction = Tileset.LEFT
  35. # move!
  36. self.render_x += self.movement[0]
  37. self.render_y += self.movement[1]
  38. return direction