Menu
CoddyTech

Zufällige Drops

Teil des Abschnitts Die Spielschleife der Pygame-Journey von Coddy. Lektion 25 von 32.

Wenn der Block über den unteren Rand hinausfällt, setze ihn oberhalb des oberen Rands zurück, damit er erneut herunterfällt. Seine Oberkante liegt unterhalb des unteren Rands, wenn block.top > 360.

Damit das Spiel weniger vorhersehbar ist, lässt du ihn an einer zufälligen Stelle fallen. Pythons Modul random wählt Zahlen aus: random.randint(0, 460) ist eine ganze Zahl von 0 bis 460, einschließlich beider Grenzen.

import random

if block.top > 360:
    block.y = -20
    block.x = random.randint(0, 460)

Warum 460? Der Block ist 20 Pixel breit, daher liegt seine rechte Seite bei einem x-Wert von 460 am Fensterrand. Und y = -20 positioniert ihn direkt oberhalb des Fensters, sodass er von oben hineingleitet.

challenge icon

Aufgabe

Einfach
  1. Füge oben import random hinzu.
  2. Nachdem der Block heruntergefallen ist, setze bei block.top > 360 block.y = -20 und block.x auf random.randint(0, 460).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Die Spielschleife

Übe selbstständig: Pygame-Playground