Mit einem Rect platzieren
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 2 von 36.
Eine obere linke Ecke von Hand zu berechnen bedeutet, für jedes platzierte Bild Summen zu bilden. Jedes Surface kann ein Rect in seiner eigenen Größe liefern:
ship_rect = ship.get_rect(center=(320, 400))get_rect() allein ist Rect(0, 0, 64, 64). Ein Schlüsselwort positioniert es: center, midbottom, topleft oder jeder andere Punkt, den ein Rect hat. Hier kommt die Mitte des Schiffs auf (320, 400), und pygame berechnet die Ecke: (288, 368).
Blitte das Bild am Rect, dann landet es an der oberen linken Ecke des Rect:
screen.blit(ship, ship_rect)Jetzt ist das Rect die Position des Schiffs. Ändere ship_rect.x oder ship_rect.centery, und im nächsten Frame wird das Schiff dort gezeichnet. So bewegt sich jedes Bild in einem Spiel: ein Rect beibehalten, das Rect ändern, am Rect blitten. Es ist außerdem das Rect, mit dem du Kollisionen prüfst, wie in Abschnitt 2.
Aufgabe
Einfach- Erstelle nach dem Laden von
shipship_rect = ship.get_rect(center=(320, 400)). - Blitte
shipanship_rectstatt an einem festen Punkt.
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Space Images")
clock = pygame.time.Clock()
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(ship, (288, 208))
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