Menu
CoddyTech

Funkeln

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

Echte Sterne flackern. Hier wird jeder Stern hin und wieder zufällig für ein einzelnes Bild dunkler. Bei jedem Bild würfelt jeder Stern eine Zahl von 1 bis 30, und bei einer 1 wird er dunkel gezeichnet:

for star in stars:
    colour = (255, 255, 255)
    if random.randint(1, 30) == 1:
        colour = (110, 120, 170)
    pygame.draw.circle(screen, colour, star, 3)

colour ist für jeden Stern zunächst weiß, und if ändert die Farbe nur bei einer 1. Eines von 30 Bildern entspricht etwa zweimal pro Sekunde für jeden Stern, und jeder Stern würfelt seine eigene Zahl, sodass sie zu unterschiedlichen Zeitpunkten flackern. Diese kleine, unregelmäßige Veränderung lässt den Himmel lebendig wirken.

Füge oben im Programm import random hinzu. Hier gehört ein Zufallswurf in die Zeichen-Schleife, weil die Entscheidung bei jedem Bild für jeden Stern erneut getroffen werden muss.

challenge icon

Aufgabe

Mittel

Lass die Sterne funkeln:

  1. Füge oben import random hinzu.
  2. Setze in der Sternschleife für jeden Stern colour zunächst auf Weiß (255, 255, 255).
  3. Wenn random.randint(1, 30) == 1 gilt, mache ihn dunkler (110, 120, 170).
  4. Zeichne den Stern mit colour.

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 die Dinge einmal pro Frame.

    screen.fill((20, 24, 48))
    # Zeichne hier, nachdem der Hintergrund gefüllt wurde.
    pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
    pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 3)

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

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground