Beende dein Spiel
Lektion 40 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Nun zu den Schritten 3 bis 5: eine Herausforderung, ein Spielende und Text. Rock Dodge verwendet eine Idee, die du noch nicht kennengelernt hast: eine Liste von Rects – alle 400 ms ein neuer Felsbrocken, viele davon gleichzeitig auf dem Bildschirm.
rocks = []
# bei einem NEW_ROCK-Timerereignis:
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 List Comprehension: eine neue Liste, die nur die Felsbrocken enthält, die noch auf dem Bildschirm sind, damit die Liste nicht endlos wächst.
Ein String namens state mit den Werten "playing", "lost" oder "won" ersetzt mehrere Flags. Und pygame.time.get_ticks() liefert die Millisekunden seit dem Spielstart, womit sich ein Timer einrichten lässt: Überlebe 20 Sekunden, um zu gewinnen.
Gestalte dein Spiel nach deinen Vorstellungen: Ändere die Farben, die Geschwindigkeiten und die Regeln. Dann spiel es. 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, das sich ohne gedrückte Taste bewegt, einem Spiel, das 30 Sekunden lang ohne Fehler läuft, und einem Fenster gesucht, das sich schließen lässt. Alles andere liegt bei dir.
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 Spiele mit Pygame erstellen
Übe selbstständig: Pygame-Playground