Menu
CoddyTech

Stelle dein Spiel fertig

Lektion 41 von 41 im Kurs Spiele mit Pygame erstellen von Coddy.

Nun zu den Schritten 3 bis 5: eine Herausforderung, ein Ende und Text. Rock Dodge verwaltet seine Felsen in einer Liste von Rects: alle 400 ms ein neuer Felsen, viele gleichzeitig auf dem Bildschirm.

rocks = []

# bei einem NEW_ROCK-Timer-Ereignis:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# in jedem Frame:
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

Die letzte Zeile ist ein List Comprehension: eine neue Liste, die nur die noch auf dem Bildschirm befindlichen Felsen enthält, damit die Liste nicht endlos wächst.

Ein state-String, "playing", "lost" oder "won", entscheidet wie in Sky Runner, was jeder Frame macht. Und pygame.time.get_ticks() gibt die Millisekunden seit dem Spielstart zurück, wodurch ein Timer entsteht: Überlebe 20 Sekunden, um zu gewinnen.

Dein Spiel kann alles aus diesem Kurs verwenden, und die Pygame-Reise zeigt noch mehr: Sprites, Bilder, Sound, Menüs, Highscores und Karten.

Gestalte dein Spiel ganz nach deinen Vorstellungen: Ändere die Farben, die Geschwindigkeiten und die Regeln. Dann starte es mit „Spielen“. Wenn es zu schwer ist zu gewinnen oder du zu schnell verlierst, ändere die Zahlen, bis es Spaß macht.

challenge icon

Aufgabe

Einfach

Stelle dein Spiel fertig.

  1. Füge etwas hinzu, das sich von selbst bewegt.
  2. Zeige Text auf dem Bildschirm an, zum Beispiel eine Punktzahl oder einen Timer.
  3. Gib dem Spiel ein Ende: eine Möglichkeit zu gewinnen, eine zu verlieren oder beides.

Drücke auf „Spielen“: Etwas bewegt sich von selbst und dein Text wird angezeigt. Drücke dann auf „Prüfen“.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 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]:
        player.x -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

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

pygame.quit()
quiz iconTeste dich selbst

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

Übe selbstständig: Pygame-Playground