Scintilla
Fa parte della sezione Python in una finestra di gioco del percorso Pygame di Coddy. Lezione 30 di 32.
Le stelle vere scintillano. Qui ogni stella si attenua per un singolo fotogramma ogni tanto, per caso. A ogni fotogramma, ogni stella estrae un numero da 1 a 30 e, se esce 1, viene disegnata attenuata:
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 inizia con il bianco per ogni stella, e if lo modifica solo quando esce 1. Un fotogramma ogni 30 corrisponde a circa due volte al secondo per ogni stella, e ogni stella estrae il proprio numero, quindi scintillano in momenti diversi. È questo piccolo cambiamento irregolare a far sembrare vivo il cielo.
Aggiungi import random all'inizio del programma. Qui l'estrazione casuale va inserita nel ciclo di disegno, perché la scelta deve essere effettuata di nuovo a ogni fotogramma, per ogni stella.
Sfida
MedioFai brillare le stelle:
- Aggiungi
import randomall'inizio. - Nel ciclo delle stelle, imposta il
colourdi ogni stella su bianco(255, 255, 255). - Quando
random.randint(1, 30) == 1, rendilo tenue(110, 120, 170). - Disegna la stella con
colour.
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Prepara tutto qui, prima del ciclo di gioco.
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)
# Modifica le cose qui, una volta per fotogramma.
screen.fill((20, 24, 48))
# Disegna qui, dopo aver riempito lo schermo.
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()
Tutte le lezioni di Python in una finestra di gioco
Esercitati da solo: Playground Pygame