|
|
@@ -77,31 +77,49 @@ def load_level(): # https://bitbucket.org/r1chardj0n3s/pygame-tutorial/src/a383d
|
|
|
level_array = load_level()
|
|
|
|
|
|
direction = Tileset.RIGHT
|
|
|
+movement = [0, 0]
|
|
|
while True:
|
|
|
clock.tick(60)
|
|
|
for event in pygame.event.get():
|
|
|
handle_event(event)
|
|
|
|
|
|
- SPEED = 4
|
|
|
- if keys[pygame.K_RIGHT]:
|
|
|
- render_x += SPEED
|
|
|
- direction = Tileset.RIGHT
|
|
|
- if keys[pygame.K_LEFT]:
|
|
|
- render_x -= SPEED
|
|
|
- direction = Tileset.LEFT
|
|
|
- if keys[pygame.K_DOWN]:
|
|
|
- render_y += SPEED
|
|
|
- direction = Tileset.DOWN
|
|
|
- if keys[pygame.K_UP]:
|
|
|
- render_y -= SPEED
|
|
|
- direction = Tileset.UP
|
|
|
+ # 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]
|
|
|
|
|
|
screen.fill(black)
|
|
|
+ # draw the map
|
|
|
for i, tile in enumerate(level_array):
|
|
|
x, y = divmod(i, 50)
|
|
|
x *= tileset.tilesize
|
|
|
y *= tileset.tilesize
|
|
|
tile_y, tile_x = divmod(tile - 1, tileset.tilesize) # those 1-indexing fuckers
|
|
|
tileset.render(tile_x, tile_y, (y, x))
|
|
|
+ # draw the player
|
|
|
tileset.render_person((render_x, render_y), direction)
|
|
|
pygame.display.flip()
|