Cuenta las estrellas
Parte de la sección Python en una ventana de juego del Journey de Pygame de Coddy. Lección 31 de 32.
El jugador necesita saber qué tan cerca está el cielo de llenarse. Muestra el conteo de veinte en la esquina superior izquierda:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))La cadena f combina un valor, len(stars), con texto sin formato, /20. Con siete estrellas, muestra Stars: 7/20.
Crea la fuente en la parte de configuración, junto a stars = []. Crear una fuente la carga, lo que lleva tiempo, así que hazlo una sola vez. Renderizar el texto es barato y ocurre en cada fotograma, por lo que el conteo siempre está actualizado.
Dibuja la etiqueta al final de la parte de dibujo, para que ninguna estrella pueda cubrirla.
Desafío
FácilMuestra el recuento:
- En la parte de configuración, crea
font = pygame.font.Font(None, 36). - Al final de la parte de dibujo, representa
f"Stars: {len(stars)}/20"en(230, 230, 240)y dibújalo en (20, 20).
Pruébalo tú mismo
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Prepara todo aquí, antes del bucle del juego.
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)
# Cambia las cosas aquí, una vez por fotograma.
screen.fill((20, 24, 48))
# Dibuja aquí, después de rellenar la pantalla.
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()
Todas las lecciones de Python en una ventana de juego
Practica por tu cuenta: Playground de Pygame