Menu
CoddyTech

Um den Mittelpunkt drehen

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

Ein Schiff, das sich dreht, braucht ein gedrehtes Bild. pygame.transform.rotate(image, angle) gibt dir eine neue Surface zurück: das Bild um angle Grad gegen den Uhrzeigersinn gedreht. Ein negativer Winkel dreht es im Uhrzeigersinn. Das Originalbild ändert sich nicht.

Ein gedrehtes Quadrat passt nicht in ein Quadrat derselben Größe, daher ist die neue Surface größer: Das um 45 Grad gedrehte Schiff ist 90 × 90 Pixel groß. Blittest du es an der alten linken oberen Ecke, bewegt sich seine Mitte nach unten und rechts; durch das Drehen wackelt das Schiff im Fenster.

Lass stattdessen die Mitte an derselben Stelle. Fordere für das gedrehte Bild ein Rect an, das auf demselben Punkt zentriert ist:

rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)

Drehe das Original-ship in jedem Frame um den gesamten Wert von angle. Die Richtung des Schiffs ist die Zahl in angle, und das Bild wird daraus erstellt.

challenge icon

Aufgabe

Mittel
  1. Setze vor der Schleife angle = 0.
  2. Wenn du die linke Pfeiltaste gedrückt hältst, wird angle in jedem Frame um 3 erhöht (gegen den Uhrzeigersinn); wenn du die rechte Pfeiltaste gedrückt hältst, wird der Wert um 3 verringert.
  3. Drehe in jedem Frame ship um angle und zeichne das Ergebnis mit dem Mittelpunkt bei (320, 240).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()

ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(center=(320, 240))

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

    screen.fill((20, 22, 40))
    screen.blit(ship, ship_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground