diff options
-rwxr-xr-x | troll | 44 |
1 files changed, 31 insertions, 13 deletions
@@ -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() |