Menu
CoddyTech

Sprint

Lesson 6 of 41 in Coddy's Make Games with Pygame course.

A variable can change every frame, depending on what the player does. Here the speed depends on whether Space is held.

keys = pygame.key.get_pressed()
speed = 4
if keys[pygame.K_SPACE]:
    speed = 8

Every frame starts from the normal speed, 4. Only a frame where Space is down raises it to 8. Let go of Space and the next frame is back to 4.

Set the normal value first and the special one after it. In the other order the second line always wins and Space does nothing.

challenge icon

Challenge

Easy

Let the player sprint while Space is held.

  1. Remove speed = 4 from above the loop.
  2. In the loop, right after keys = pygame.key.get_pressed(), set speed = 4, then set it to 8 if Space is held.

Press Play and hold Space with an arrow: the square goes twice as fast. Then Check.

Try it yourself

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

x, y = 220, 160
speed = 4

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

All lessons in Make Games with Pygame

Practice on your own: Pygame playground