Menu
CoddyTech

Punkte zählen

Teil des Abschnitts Die Spielschleife der Pygame-Journey von Coddy. Lektion 27 von 32.

Text in pygame ist ein Bild der Wörter. Ein pygame.font.Font wandelt eine Zeichenkette in eine Surface um, und diese Surface zeichnest du mit screen.blit.

font = pygame.font.Font(None, 32)

text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(text, (10, 10))

Font(None, 32) ist die integrierte Schriftart von pygame und 32 Pixel hoch. Erzeuge sie einmal vor der Schleife. render(text, True, color) zeichnet die Wörter; True glättet ihre Kanten. blit(surface, (x, y)) kopiert das Bild auf den Bildschirm, wobei sich seine linke obere Ecke bei (x, y) befindet.

Rendere den Text innerhalb der Schleife, nach dem Füllen. Der Punktestand ändert sich, und ein einmal erstelltes Bild zeigt weiterhin die alte Zahl an.

challenge icon

Aufgabe

Einfach
  1. Erstelle vor der Schleife font = pygame.font.Font(None, 32) und score = 0.
  2. Erhöhe score um 1, wenn der Korb einen Block auffängt.
  3. Rendere nach dem Zeichnen des Blocks f"Score: {score}" in (240, 240, 240) und blitte es an (10, 10).

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()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 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]:
        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)
    if block.colliderect(basket):
        block.y = -20
        block.x = random.randint(0, 460)

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

pygame.quit()

Alle Lektionen in Die Spielschleife

Übe selbstständig: Pygame-Playground