Centellea
Parte de la sección Python en una ventana de juego del Journey de Pygame de Coddy. Lección 30 de 32.
Las estrellas reales parpadean. Aquí cada estrella se atenúa durante un solo fotograma de vez en cuando, al azar. En cada fotograma, cada estrella obtiene un número del 1 al 30 y, si sale 1, se dibuja atenuada:
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)colour empieza siendo blanco para cada estrella, y if solo lo cambia cuando sale 1. Una vez cada 30 fotogramas equivale aproximadamente a dos veces por segundo para cada estrella, y cada una obtiene su propio número, así que parpadean en momentos diferentes. Ese pequeño cambio irregular es lo que hace que el cielo parezca estar vivo.
Añade import random al principio del programa. Aquí, la elección aleatoria debe hacerse en el bucle de dibujo porque hay que volver a elegir en cada fotograma para cada estrella.
Desafío
IntermedioHaz que las estrellas parpadeen:
- Añade
import randomal principio. - En el bucle de las estrellas, empieza con el color de cada estrella en blanco
(255, 255, 255). - Cuando
random.randint(1, 30) == 1, haz que sea tenue(110, 120, 170). - Dibuja la estrella con
colour.
Pruébalo tú mismo
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:
pygame.draw.circle(screen, (255, 255, 255), 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