Menu
CoddyTech

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.

challenge icon

Desafio

Médio

Faça as estrelas cintilarem:

  1. Adicione import random no início.
  2. No laço das estrelas, comece definindo a colour de cada estrela como branca (255, 255, 255).
  3. Quando random.randint(1, 30) == 1, deixe-a mais escura (110, 120, 170).
  4. 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