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.
Aufgabe
Mittel- Setze vor der Schleife
angle = 0. - Wenn du die linke Pfeiltaste gedrückt hältst, wird
anglein jedem Frame um 3 erhöht (gegen den Uhrzeigersinn); wenn du die rechte Pfeiltaste gedrückt hältst, wird der Wert um 3 verringert. - Drehe in jedem Frame
shipumangleund 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
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