Menu
CoddyTech

Punkte sammeln

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

Text in pygame ist ein Bild der Wörter. Ein pygame.font.Font wandelt eine Zeichenfolge in eine Oberfläche um, und diese Oberfläche 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 mit einer Höhe von 32 Pixeln. 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 obere linke 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

Zähle die gefangenen Blöcke auf dem Bildschirm.

  1. Lege vor der Schleife font = pygame.font.Font(None, 32) und score = 0 an.
  2. Erhöhe score um 1, wenn der Korb einen Block fängt.
  3. Zeichne nach dem Block f"Score: {score}" in (240, 240, 240) und blitte ihn bei (10, 10).

Drücke „Spielen“ und fange einen Block: Score: 1 wird angezeigt. Drücke dann „Prüfen“.

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 Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground