Gewinnen oder verlieren
Lektion 15 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Ein Spiel endet. Hier verlierst du, wenn die Leben 0 erreichen, und gewinnst, wenn der Punktestand 10 erreicht. Solange keines von beidem passiert ist, läuft das Spiel.
Fasse alles, was sich bewegt, unter einer Bedingung zusammen, damit es anhält, wenn das Spiel endet:
if lives > 0 and score < 10:
# Tasten, der Korb, der Block, gefangene und verfehlte ObjekteDas Zeichnen bleibt außerhalb dieses if: Der Bildschirm zeigt weiterhin das letzte Bild und darüber das Ergebnis.
if lives == 0:
message = font.render("Game over", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))message.get_rect(center=(240, 160)) ist das Rect des Textbildes, dessen Mittelpunkt auf (240, 160) gesetzt ist. Beim Blitten an einem Rect wird dessen linke obere Ecke verwendet, sodass der Text zentriert ist.
Aufgabe
Mittel- Rücke alles, was sich bewegt (die Tasten, den Korb, den Block, Treffer und Fehlschüsse), unter
if lives > 0 and score < 10:ein. - Zeige nach dem Zeichnen der Punktzahl und der Leben
Game overan, wennlives == 0, oderYou win!, wennscore == 10, zentriert bei(240, 160).
Probier es selbst
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
score = 0
lives = 3
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())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
lives -= 1
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)
score += 1
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
score_text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(score_text, (10, 10))
lives_text = font.render(f"Lives: {lives}", True, (240, 240, 240))
screen.blit(lives_text, (370, 10))
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
2Ereignisse und Kollisionen
Der KorbEin fallender BlockÜbe selbstständig: Pygame-Playground