Zähle die Sterne
Teil des Abschnitts Python in einem Spielfenster der Pygame-Journey von Coddy. Lektion 31 von 32.
Der Spieler muss wissen, wie nah der Himmel daran ist, vollständig gefüllt zu sein. Zeige die Anzahl von zwanzig in der oberen linken Ecke an:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))Der f-String kombiniert einen Wert, len(stars), mit einfachem Text, /20. Bei sieben Sternen wird Stars: 7/20 angezeigt.
Erstelle die Schriftart im Setup-Teil neben stars = []. Beim Erstellen einer Schriftart wird sie geladen, was Zeit kostet, also mach das einmal. Das Rendern des Textes ist günstig und erfolgt in jedem Frame, sodass die Anzahl immer aktuell ist.
Zeichne die Beschriftung zuletzt im Zeichenteil, damit kein Stern sie verdecken kann.
Aufgabe
EinfachZeige die Anzahl an:
- Erstelle im Setup-Teil
font = pygame.font.Font(None, 36). - Rendere am Ende des Zeichenteils
f"Stars: {len(stars)}/20"in(230, 230, 240)und blitte es bei (20, 20).
Probier es selbst
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Richte hier alles ein, bevor die Spielschleife beginnt.
stars = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# Ändere hier Dinge einmal pro Frame.
screen.fill((20, 24, 48))
# Zeichne hier, nachdem der Hintergrund gefüllt wurde.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Alle Lektionen in Python in einem Spielfenster
Übe selbstständig: Pygame-Playground