Menu
CoddyTech

Am Rand auf die andere Seite

Teil des Abschnitts Python in einem Spielfenster der Pygame-Journey von Coddy. Lektion 10 von 32.

Ein if führt seine Zeilen nur aus, wenn eine Bedingung wahr ist:

if comet_x > 640:
    comet_x = 0

Die Bedingung endet mit einem Doppelpunkt. Die darunterstehenden Zeilen sind um 4 Leerzeichen eingerückt: Sie gehören zum if. Python prüft die Bedingung in jedem Frame. Solange sich der Komet im Fenster befindet, ist sie falsch und nichts passiert. Sobald der Komet den rechten Rand passiert, ist sie wahr, und der Komet kehrt nach links zurück.

Ein Vergleich ergibt entweder True oder False. > bedeutet größer als, < kleiner als, und == prüft, ob zwei Werte gleich sind. Ein = weist einen Wert zu; zwei vergleichen.

Prüfe einen Bereich wie > 640 und nicht einen einzelnen exakten Wert. Der Komet startet bei 50 und bewegt sich pro Frame um 3 Pixel: 635, 638, 641. Er landet nie auf 640, daher wäre comet_x == 640 niemals wahr.

challenge icon

Aufgabe

Einfach

Füge nach der Zeile, die den Kometen bewegt, ein if hinzu: Wenn comet_x größer als 640 ist, setze comet_x auf 0. Der Komet fliegt dann immer wieder über das Fenster.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Richte hier alles ein, bevor die Spielschleife beginnt.
moon_x = 160
moon_y = 120
comet_x = 50
comet_y = 200

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

    # Ändere hier die Werte, einmal pro Frame.
    comet_x = comet_x + 3

    screen.fill((20, 24, 48))
    # Zeichne hier, nachdem der Bildschirm gefüllt wurde.
    pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
    pygame.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground