|
|
@@ -5,16 +5,16 @@ import sys
|
|
|
import pygame
|
|
|
|
|
|
from tileset import Tileset
|
|
|
+from character import Character
|
|
|
|
|
|
pygame.init()
|
|
|
screen = pygame.display.set_mode((800, 800))
|
|
|
tileset = Tileset(screen)
|
|
|
tileset.load_level()
|
|
|
+character = Character(tileset.tilesize)
|
|
|
clock = pygame.time.Clock()
|
|
|
|
|
|
black = (0, 0, 0)
|
|
|
-render_x = 0
|
|
|
-render_y = 13*tileset.tilesize
|
|
|
|
|
|
keys = {
|
|
|
pygame.K_LEFT: False,
|
|
|
@@ -22,53 +22,25 @@ keys = {
|
|
|
pygame.K_UP: False,
|
|
|
pygame.K_DOWN: False,
|
|
|
}
|
|
|
-def handle_event(event):
|
|
|
- if event.type == pygame.KEYDOWN:
|
|
|
- if event.key in keys.iterkeys():
|
|
|
- keys[event.key] = True
|
|
|
- elif event.type == pygame.KEYUP:
|
|
|
- if event.key in keys.iterkeys():
|
|
|
- keys[event.key] = False
|
|
|
- elif event.type == pygame.QUIT:
|
|
|
- sys.exit()
|
|
|
|
|
|
direction = Tileset.RIGHT
|
|
|
-movement = [0, 0]
|
|
|
while True:
|
|
|
clock.tick(60)
|
|
|
for event in pygame.event.get():
|
|
|
- handle_event(event)
|
|
|
-
|
|
|
- # are we done moving?
|
|
|
- if render_x % tileset.tilesize == 0:
|
|
|
- movement[0] = 0
|
|
|
- if render_y % tileset.tilesize == 0:
|
|
|
- movement[1] = 0
|
|
|
-
|
|
|
- SPEED = 2
|
|
|
- # can we start moving?
|
|
|
- if movement[1] == 0:
|
|
|
- if keys[pygame.K_DOWN]:
|
|
|
- movement[1] = SPEED
|
|
|
- direction = Tileset.DOWN
|
|
|
- elif keys[pygame.K_UP]:
|
|
|
- movement[1] = -SPEED
|
|
|
- direction = Tileset.UP
|
|
|
- if movement[0] == 0:
|
|
|
- if keys[pygame.K_RIGHT]:
|
|
|
- movement[0] = SPEED
|
|
|
- if not movement[1]: # prefer up/down when moving diagonally
|
|
|
- direction = Tileset.RIGHT
|
|
|
- elif keys[pygame.K_LEFT]:
|
|
|
- movement[0] = -SPEED
|
|
|
- if not movement[1]:
|
|
|
- direction = Tileset.LEFT
|
|
|
-
|
|
|
- # move!
|
|
|
- render_x += movement[0]
|
|
|
- render_y += movement[1]
|
|
|
+ if event.type == pygame.KEYDOWN:
|
|
|
+ if event.key in keys.iterkeys():
|
|
|
+ keys[event.key] = True
|
|
|
+ elif event.type == pygame.KEYUP:
|
|
|
+ if event.key in keys.iterkeys():
|
|
|
+ keys[event.key] = False
|
|
|
+ elif event.type == pygame.QUIT:
|
|
|
+ sys.exit()
|
|
|
+
|
|
|
+ new_direction = character.frame(keys)
|
|
|
+ if new_direction is not None:
|
|
|
+ direction = new_direction
|
|
|
|
|
|
screen.fill(black)
|
|
|
tileset.render_level()
|
|
|
- tileset.render_person((render_x, render_y), direction)
|
|
|
+ tileset.render_person((character.render_x, character.render_y), direction)
|
|
|
pygame.display.flip()
|