Menu
CoddyTech

Zufallszahlen

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

Das Modul random von Python wählt Zahlen zufällig aus. Importiere es am Anfang des Programms, oberhalb oder unterhalb von import pygame:

import random

random.randint(a, b) liefert eine ganze Zahl von a bis b, einschließlich beider Endpunkte. random.choice(items) wählt ein Element aus einer Liste aus:

x = random.randint(20, 620)
size = random.choice([3, 4, 5])

Jeder Aufruf wählt erneut aus, also rufe die Funktion genau dann auf, wenn du einen neuen Wert brauchst. Ein Stern, der mit der Leertaste platziert wird:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    x = random.randint(20, 620)
    y = random.randint(60, 300)
    stars.append((x, y))

Beachte die doppelten Klammern in stars.append((x, y)): append nimmt ein Element entgegen, und dieses Element ist das Tupel (x, y). Wählst du x und y stattdessen einmal vor der Spielschleife aus, landet jeder Stern an derselben Stelle.

challenge icon

Aufgabe

Mittel

Lass die Leertaste Sterne verstreuen:

  1. Füge oben import random hinzu.
  2. Wenn ein KEYDOWN-Ereignis für K_SPACE eintrifft, wähle x = random.randint(20, 620) und y = random.randint(60, 300) und füge (x, y) zu stars hinzu.
  3. Klicks fügen weiterhin wie zuvor Sterne hinzu.

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 = []
font = pygame.font.Font(None, 36)

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)
    text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    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 Python in einem Spielfenster

Übe selbstständig: Pygame-Playground