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.
Aufgabe
Mittel- Lege vor der Schleife
frame_index = 0undtimer = 0fest. - Erhöhe in jedem Frame
timerum 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. - 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()
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
1Bilder laden
Ein Bild ladenMit einem Rect platzierenDas Bild bewegenEinen Hintergrund kachelnTransparente Pixel2Drehen, Spiegeln, Skalieren
Um den Mittelpunkt drehenIn Flugrichtung ausrichtenEin Bild skalierenVom Original aus drehen3Klassen für Spielobjekte
Deine erste KlasseMethodenSelf ist das ObjektEine Liste von ObjektenObjekte mit BildernEine Unterklasse6Animation mit Sprite Sheets
Ein Sprite Sheet zuschneidenEin Frame-ZählerMit Zeit animierenEine einmalige ExplosionÜbe selbstständig: Pygame-Playground