Ein fallender Block
Lektion 10 von 41 im Kurs Spiele mit Pygame erstellen von Coddy.
Etwas, das fällt, ist etwas, dessen y-Wert in jedem Frame wächst. Mache den Block ebenfalls zu einem Rect und erhöhe seinen y-Wert bei jedem Durchlauf der Schleife:
block = pygame.Rect(220, 0, 20, 20)
while running:
# Ereignisse und Tasten
block.y += 3
# füllen, zeichnenBei 60 Frames pro Sekunde entsprechen 3 Pixel pro Frame 180 Pixeln pro Sekunde. Das Fenster ist 360 Pixel hoch, also braucht der Block zwei Sekunden, um den unteren Rand zu erreichen.
Dieses Spiel bewegt sich Frame für Frame, wie „Move a Square“, nicht anhand von dt. Ein Rect speichert nur ganze Zahlen, daher würde ein Schritt von beispielsweise 0,6 Pixeln auf 0 abgerundet und das Rect würde sich nie bewegen. Spiele, die Rects zeitbasiert bewegen, speichern die Position in einem Vector2 und übertragen sie in das Rect.
Der Block fällt weiter, nachdem er das Fenster verlassen hat. Noch hält ihn nichts auf; in der nächsten Lektion kommt er zurück.
Aufgabe
EinfachLass einen Block von oben herunterfallen.
- Erstelle unter dem Korb
block = pygame.Rect(220, 0, 20, 20). - Addiere in der Schleife, nachdem sich der Korb bewegt hat, 3 zu
block.y. - Zeichne den Block nach dem Korb in Rot
(235, 80, 80).
Drücke auf „Spielen“: Ein roter Block fällt von oben herunter. Drücke dann auf „Prüfen“.
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)
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())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Alle Lektionen in Spiele mit Pygame erstellen
2Ereignisse und Kollisionen
Der KorbEin fallender BlockÜbe selbstständig: Pygame-Playground