Chame várias vezes
Parte da seção Python em uma janela de jogo do Journey de Pygame da Coddy. Lição 23 de 32.
Chame uma função em um loop e ela desenhará um padrão. O loop calcula os argumentos, e a função faz o desenho:
for i in range(8):
draw_star(60 + i * 70, 60 + i * 45)A cada iteração, a estrela fica 70 pixels à direita da anterior e 45 pixels abaixo, então as estrelas formam uma linha de (60, 60) até (550, 375). Altere 70 ou 45 e todas as estrelas acompanharão a mudança.
É por isso que vale a pena escrever funções. As linhas que desenham uma estrela existem uma única vez. Para mudar a aparência de todas as estrelas, com raios mais longos ou outra cor, você altera o corpo da função, e cada chamada desenha a nova estrela.
Dê à função um nome que descreva o que ela faz, geralmente usando um verbo: draw_star, move_comet, reset_game. Assim, uma linha que a chama é lida como uma frase.
Desafio
FácilDesenhe uma linha de estrelas: substitua a chamada única por for i in range(8):, chamando draw_star(60 + i * 70, 60 + i * 45). As 8 estrelas vão de (60, 60) a (550, 375).
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.
def draw_star(x, y):
pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Faça as alterações aqui, uma vez por quadro.
screen.fill((20, 24, 48))
# Desenhe aqui, depois de preencher a tela.
draw_star(60, 60)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Python em uma janela de jogo
Pratique por conta própria: Playground de Pygame