Menu
CoddyTech

Ein Frame-Zähler

Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 26 von 36.

Die Figur läuft über das Fenster, aber ihre Beine bewegen sich nie: Sie zeigt immer frames[0]. Das jeweils andere Bild anzuzeigen, würde 60-mal pro Sekunde flackern – viel zu schnell für Beine. Halte stattdessen jedes Bild einige Frames lang fest, und zwar mit einem Zähler:

timer += 1
if timer == 10:
    timer = 0
    frame_index = (frame_index + 1) % len(frames)

timer zählt Frames. Alle 10 Frames beginnt er wieder bei 0, und frame_index rückt zum nächsten Bild weiter. % len(frames) setzt ihn nach dem letzten Bild wieder auf 0 zurück, sodass die Animation endlos läuft – unabhängig davon, wie viele Frames die Liste enthält.

Zeichne frames[frame_index]. Bei 60 Frames pro Sekunde wird jede Pose eine Sechstel Sekunde lang angezeigt: ein ruhiger Gang. Eine kleinere Zahl als 10 lässt die Beine schneller bewegen.

challenge icon

Aufgabe

Mittel
  1. Lege vor der Schleife frame_index = 0 und timer = 0 fest.
  2. Erhöhe in jedem Frame timer um 1; wenn der Wert 10 erreicht, setze ihn wieder auf 0 und gehe mit % len(frames) zum nächsten Frame weiter, wobei der Übergang zurück zum Anfang erfolgt.
  3. Zeichne frames[frame_index] bei (x, 300).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Walk Cycle")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))
x = 0

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

    x += 2
    if x > 640:
        x = -72

    screen.fill((20, 22, 40))
    screen.blit(frames[0], (x, 300))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground