Brilhe
Parte da seção Python em uma janela de jogo do Journey de Pygame da Coddy. Lição 30 de 32.
Estrelas de verdade cintilam. Aqui, cada estrela fica mais apagada por um único quadro de vez em quando, por acaso. Em cada quadro, cada estrela sorteia um número de 1 a 30, e, quando sai 1, ela é desenhada mais apagada:
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 começa branca para cada estrela, e o if a altera somente quando sai 1. Um quadro em 30 equivale a aproximadamente duas vezes por segundo para cada estrela, e cada estrela sorteia seu próprio número, então elas cintilam em momentos diferentes. Essa pequena mudança irregular é o que faz o céu parecer vivo.
Adicione import random no início do programa. Aqui, o sorteio aleatório deve ficar no loop de desenho, pois a escolha precisa ser feita novamente em cada quadro, para cada estrela.
Desafio
MédioFaça as estrelas cintilarem:
- Adicione
import randomno início. - No laço das estrelas, comece definindo a
colourde cada estrela como branca(255, 255, 255). - Quando
random.randint(1, 30) == 1, deixe-a mais escura(110, 120, 170). - Desenhe a estrela com
colour.
Experimente você mesmo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Prepare tudo aqui, antes do loop do jogo.
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)
# Altere as coisas aqui, uma vez por quadro.
screen.fill((20, 24, 48))
# Desenhe aqui, após o preenchimento.
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 as lições de Python em uma janela de jogo
Pratique por conta própria: Playground de Pygame