Ein Bild skalieren
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 8 von 36.
Der Boss eines Levels sollte groß aussehen, und eine Lebensanzeige braucht kleine Raumschiffe. Dieselben Dateien können beides: Durch Skalieren wird eine verkleinerte oder vergrößerte Kopie erstellt.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) multipliziert beide Seiten mit 2: Aus dem 64 mal 64 Pixel großen Boss wird ein 128 mal 128 Pixel großer Boss. scale(image, (w, h)) legt die Größe exakt auf w mal h Pixel fest, selbst wenn das Bild dadurch verzerrt wird.
Skalieren ist im Vergleich zu einem Blit langsam, und jede neue Kopie lässt die Pixel ein wenig stärker verschwimmen oder blockig erscheinen. Skaliere einmal vor der Schleife ausgehend von der Originaldatei und zeichne in jedem Frame die skalierte Kopie.
Erstelle das Rect nach dem Skalieren. Ein Rect, das aus dem 64 mal 64 Pixel großen Bild erstellt wird, hätte noch die alte Größe, und center=(320, 150) würde den großen Boss nicht mittig platzieren.
Aufgabe
Einfach- Skaliere den Boss vor der Schleife um den Faktor 2 und erstelle anschließend
boss_rectaus dem skalierten Bild, zentriert bei(320, 150). - Erstelle
icon: das auf(32, 32)skalierte Schiff. - Zeichne
icondreimal, mit der linken oberen Ecke bei(10, 10),(50, 10)und(90, 10).
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(boss, boss_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