character.py 1.0 KB

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