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.
Aufgabe
Einfach- Füge oben
import randomhinzu. - Nachdem der Block heruntergefallen ist, setze bei
block.top > 360block.y = -20undblock.xaufrandom.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