Menu
CoddyTech

In Flugrichtung ausrichten

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

Das Schiff zeigt in seiner Datei nach oben. Mit rotate(ship, -90) gedreht, zeigt es nach rechts, was zu einem seitwärts fliegenden Schiff passt. Wenn es nach links fliegt, sollte es nach links zeigen.

pygame.transform.flip(image, flip_x, flip_y) liefert dir eine gespiegelte Kopie. True, False spiegelt es von links nach rechts; False, True spiegelt es von oben nach unten.

ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)

Beide Bilder werden einmal vor der Schleife erstellt. Das Spiel merkt sich dann in einer Variablen, welches davon angezeigt werden soll, und die Tasten ändern dies:

if keys[pygame.K_LEFT]:
    ship_rect.x -= 5
    image = ship_left

Zeichne image in jedem Frame. Wenn keine Taste gedrückt wird, behält image seinen letzten Wert, sodass das Schiff weiterhin in die Richtung zeigt, in die es zuletzt geflogen ist.

challenge icon

Aufgabe

Mittel
  1. Erstelle vor der Schleife ship_left: ship_right, horizontal gespiegelt.
  2. Setze vor der Schleife image = ship_right.
  3. Wenn du die linke Pfeiltaste gedrückt hältst, wird image = ship_left gesetzt; wenn du die rechte Pfeiltaste gedrückt hältst, wird image = ship_right gesetzt. Die Bewegung bleibt unverändert.
  4. Zeichne image an der Position von ship_rect.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Face the Way You Fly")
clock = pygame.time.Clock()

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

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        ship_rect.x -= 5
    if keys[pygame.K_RIGHT]:
        ship_rect.x += 5
    ship_rect.clamp_ip(screen.get_rect())

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

pygame.quit()
quiz iconTeste dich selbst

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

Übe selbstständig: Pygame-Playground