Das Bild bewegen
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 3 von 36.
Das Schiff befindet sich am unteren Rand des Fensters. Um es nach links und rechts zu bewegen, verschiebst du sein Rect mit den Pfeiltasten, so wie du das Quadrat in Abschnitt 2 bewegt hast:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 6
if keys[pygame.K_RIGHT]:
ship_rect.x += 6Die blit-Zeile bleibt unverändert: Sie zeichnet das Schiff an der aktuellen Position des Rect.
Ein Rect kann sich innerhalb eines anderen Rect halten. screen.get_rect() ist das Rect des Fensters (0, 0, 640, 480), und
ship_rect.clamp_ip(screen.get_rect())verschiebt ship_rect wieder hinein, wenn es herausragt. _ip bedeutet „in place“: Es ändert ship_rect selbst. ship_rect.clamp(...) ohne dieses Suffix lässt ship_rect unverändert und gibt stattdessen ein neues Rect zurück.
Aufgabe
Einfach- In der Schleife bewegt das Gedrückthalten von Links vor dem Zeichnen
ship_rectum 6 Pixel nach links und das Gedrückthalten von Rechts um 6 Pixel nach rechts. - Halte es anschließend mit
ship_rect.clamp_ip(screen.get_rect())im Fenster.
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()
ship_rect = ship.get_rect(center=(320, 400))
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