Zufällige Objekte
Lektion 11 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Wenn der Block über den unteren Rand hinausfällt, setze ihn wieder oberhalb des oberen Rands ein, damit er erneut herunterfällt. Seine Oberkante befindet sich über dem unteren Rand, wenn block.top > 360.
Damit das Spiel weniger vorhersehbar ist, lasse den Block an einer zufälligen Stelle fallen. Das Modul random von Python 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 breit, also liegt seine rechte Seite bei einem x-Wert von 460 am Fensterrand. Und y = -20 platziert ihn direkt oberhalb des Fensters, sodass er von oben hineingleitet.
Aufgabe
Einfach- Füge oben
import randomhinzu. - Wenn der Block herunterfällt und
block.top > 360gilt, setzeblock.y = -20und setzeblock.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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Spiele mit Pygame erstellen
2Ereignisse und Kollisionen
Der KorbEin fallender BlockÜbe selbstständig: Pygame-Playground