Menu
CoddyTech

Eine Liste von Sternen

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

Eine Liste enthält viele Werte in einer Variablen, der Reihe nach und in eckigen Klammern:

stars = [(100, 80), (220, 160), (360, 100)]

Hier ist jedes Element ein Positions-Tupel. stars[0] ist das erste Element, (100, 80), und stars[1] das zweite. Wie bei range beginnt das Zählen bei 0.

Eine for-Schleife kann eine Liste durchlaufen. Die Schleifenvariable nimmt der Reihe nach jedes Element an:

for star in stars:
    pygame.draw.circle(screen, (255, 255, 255), star, 5)

Eine Position ist ein Tupel, daher wird star direkt dort eingesetzt, wo das Zentrum erwartet wird. Füge der Liste eine Position hinzu, und ein weiterer Stern erscheint, ohne dass die Schleife geändert werden muss. Die Liste ist das Gedächtnis des Spiels für alles, was auf dem Bildschirm zu sehen ist; die Schleife zeichnet, was auch immer sie enthält.

challenge icon

Aufgabe

Einfach

Zeichne einen Himmel mit fünf Sternen aus einer Liste:

  1. Füge (360, 100), (480, 200) und (580, 70) am Ende von stars hinzu.
  2. Ersetze die Zeile, die stars[0] zeichnet, durch for star in stars: und zeichne jeden Stern als weißen Kreis mit Radius 5.

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.
stars = [(100, 80), (220, 160)]

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

    # Ändere hier in jedem Frame die nötigen Dinge.

    screen.fill((20, 24, 48))
    # Zeichne hier, nachdem der Bildschirm gefüllt wurde.
    pygame.draw.circle(screen, (255, 255, 255), stars[0], 5)

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

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground