Menu
CoddyTech

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, zeichnen

Bei 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.

challenge icon

Aufgabe

Einfach

Lass einen Block von oben herunterfallen.

  1. Erstelle unter dem Korb block = pygame.Rect(220, 0, 20, 20).
  2. Addiere in der Schleife, nachdem sich der Korb bewegt hat, 3 zu block.y.
  3. 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

Übe selbstständig: Pygame-Playground