Beende dein Spiel
Teil des Abschnitts Projekte der Pygame-Journey von Coddy. Lektion 31 von 31.
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 kommt ein neuer Felsen hinzu, sodass sich viele gleichzeitig auf dem Bildschirm befinden.
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 eine Listenkomprehension: eine neue Liste, die nur die Felsen enthält, die sich noch auf dem Bildschirm befinden, damit die Liste nicht endlos wächst.
Ein state-String, "playing", "lost" oder "won", legt fest, was jeder Frame tut, wie bei Sky Runner. Und pygame.time.get_ticks() liefert die Millisekunden seit Spielbeginn. Damit lässt sich ein Timer erstellen: Überlebe 20 Sekunden, um zu gewinnen.
Dein Spiel kann alles aus dem Lernpfad verwenden: eine Sprite-Gruppe statt der Liste, Bilder, einen Ton bei einem Treffer, Musik, ein Menü vor dem Spiel, einen Highscore, Räume, die anhand von Textkarten erstellt werden.
Gestalte dein Spiel ganz nach deinen Vorstellungen: Ändere die Farben, die Geschwindigkeiten und die Regeln. Spiel es dann. Wenn es zu schwer zu gewinnen oder zu leicht zu verlieren ist, ändere die Zahlen, bis es Spaß macht.
Aufgabe
EinfachVervollständige dein Spiel, sodass es Folgendes enthält:
- Etwas, das sich von selbst bewegt.
- Text auf dem Bildschirm, zum Beispiel eine Punktzahl oder einen Timer.
- Ein Ende: eine Möglichkeit zu gewinnen, zu verlieren oder beides.
Bei den Prüfungen wird nach Text, etwas gesucht, das sich ohne Tastendruck bewegt, einem Spiel, das 30 Sekunden lang fehlerfrei läuft, und einem Fenster, das sich schließen lässt. Alles andere bleibt dir überlassen: Formen oder Bilder, Geräusche, Musik, Zustände und Karten funktionieren alle.
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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
Übe selbstständig: Pygame-Playground