| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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
|