Menu
CoddyTech

Mit len zählen

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

len(stars) gibt an, wie viele Elemente die Liste enthält. Eine leere Liste hat die Länge 0. Verwende es, um eine Anzahl anzuzeigen:

text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))

Ein f-String kann jeden Ausdruck in seinen geschweiften Klammern enthalten, auch einen Funktionsaufruf.

len kann auch eine Obergrenze festlegen. Füge einen Stern nur hinzu, solange noch Platz ist:

if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
    stars.append(event.pos)

Sobald die Liste 10 Sterne enthält, ist die Bedingung falsch, sodass Klicks nichts bewirken. Die Anzahl auf dem Bildschirm und die Obergrenze beziehen sich auf dieselbe Liste und stimmen daher immer überein.

Die Obergrenze steht in der Ereignisschleife und ist mit and an die Klickprüfung geknüpft: Das Anhängen wird nur ausgeführt, wenn es sich um einen Klick handelt und noch Platz ist. len funktioniert auch mit Zeichenketten: len("Night") ist 5.

challenge icon

Aufgabe

Mittel

Zähle die Sterne und höre bei zehn auf:

  1. Erstelle im Setup-Teil font = pygame.font.Font(None, 36).
  2. Zeige im Zeichenteil f"Stars: {len(stars)}" in (230, 230, 240) bei (20, 20) an.
  3. Füge bei einem Klick nur dann einen Stern hinzu, wenn len(stars) < 10.

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 = []

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

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

    screen.fill((20, 24, 48))
    # Zeichne hier, nachdem der Bildschirm gefüllt wurde.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)

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

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground