From 01eeb9a89afa2b3ac553c9c3ecd687bb5d3fcd36 Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 11 Oct 2013 20:55:59 -0700 Subject: use pygame.clock.tick and pygame.KEYUP --- troll | 50 +++++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/troll b/troll index 29b0dc7..7745746 100755 --- a/troll +++ b/troll @@ -18,32 +18,44 @@ class Tileset(object): size = width, height = 640, 480 black = (0, 0, 0) +render_x = 0 +render_y = 13*16 pygame.init() screen = pygame.display.set_mode(size) tileset = Tileset(screen) -pygame.key.set_repeat(100, 100) +clock = pygame.time.Clock() + +keys = { + pygame.K_LEFT: False, + pygame.K_RIGHT: False, + 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() -render_x = 0 -render_y = 13*16 while True: - keydown = False + clock.tick(60) for event in pygame.event.get(): - if event.type == pygame.KEYDOWN: - keydown = True - elif event.type == pygame.QUIT: - sys.exit() - - if keydown: - pressed_keys = pygame.key.get_pressed() - if pressed_keys[pygame.K_RIGHT]: - render_x += 16 - if pressed_keys[pygame.K_LEFT]: - render_x -= 16 - if pressed_keys[pygame.K_DOWN]: - render_y += 16 - if pressed_keys[pygame.K_UP]: - render_y -= 16 + handle_event(event) + + SPEED = 4 + if keys[pygame.K_RIGHT]: + render_x += SPEED + if keys[pygame.K_LEFT]: + render_x -= SPEED + if keys[pygame.K_DOWN]: + render_y += SPEED + if keys[pygame.K_UP]: + render_y -= SPEED screen.fill(black) tileset.render_person((render_x, render_y)) -- cgit v1.2.3