Menu
CoddyTech

Pixel pro Sekunde

Teil des Abschnitts Die Spielschleife der Pygame-Journey von Coddy. Lektion 19 von 32.

Eine Geschwindigkeit von 4 Pixeln pro Frame entspricht nur bei 60 Frames pro Sekunde 240 Pixeln pro Sekunde. Bei 30 läuft dasselbe Spiel mit halber Geschwindigkeit. Gib Geschwindigkeiten stattdessen in Pixeln pro Sekunde an und multipliziere mit dt, um den Schritt für dieses Frame zu erhalten:

speed = 200

if keys[pygame.K_RIGHT]:
    x += speed * dt

Bei 60 Frames pro Sekunde beträgt dt ungefähr 0.017, und der Ball bewegt sich etwa 3.4 Pixel pro Frame. Bei 30 beträgt dt ungefähr 0.033, und er bewegt sich etwa 6.7: pro Frame doppelt so weit, aber dieselben 200 Pixel pro Sekunde.

Positionen werden zu Dezimalzahlen wie 243.4. Das ist in Ordnung: pygame akzeptiert Dezimalpositionen und zeichnet auf ganzen Pixeln.

challenge icon

Aufgabe

Einfach
  1. Setze vor der Schleife speed = 200.
  2. Sorge dafür, dass jede Pfeiltaste den Ball um speed * dt statt um 4 bewegt.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Pixels per Second")
clock = pygame.time.Clock()

x, y = 240, 180
dt = 0

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 -= 4
    if keys[pygame.K_RIGHT]:
        x += 4
    if keys[pygame.K_UP]:
        y -= 4
    if keys[pygame.K_DOWN]:
        y += 4

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (255, 196, 0), (x, y), 16)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

pygame.quit()

Alle Lektionen in Die Spielschleife

Übe selbstständig: Pygame-Playground