summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtroll44
1 files changed, 31 insertions, 13 deletions
diff --git a/troll b/troll
index 296b0e5..f550aef 100755
--- a/troll
+++ b/troll
@@ -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()