Conte com While
Parte da seção Python em uma janela de jogo do Journey de Pygame da Coddy. Lição 19 de 32.
Um loop while se repete enquanto sua condição for verdadeira. Use-o quando você não sabe de antemão quantas vezes precisa repetir:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1O raio cai pela metade a cada vez: 200, 100, 50, 25, 12. // divide e descarta o que vem depois da vírgula, então 25 // 2 é 12. Depois, o valor é 6, a condição é falsa e o loop termina após 5 anéis. rings os conta. O quinto número na chamada de círculo, 2, desenha um contorno de 2 pixels de largura em vez de um círculo preenchido.
O loop do jogo também é um loop while, que executa até você fechar a janela. Um loop while dentro de um quadro precisa terminar rapidamente, ou o quadro nunca termina. Se você remover a linha que divide o raio pela metade, a condição permanece verdadeira para sempre: o jogo congela, e Check informa que o jogo nunca chegou ao primeiro quadro.
Desafio
MédioNa parte de desenho, substitua o anel único por um loop while:
- Comece com
radius = 200erings = 0. - Enquanto
radius > 10: desenhe um anel de contorno da cor(150, 190, 255), com largura 2, centralizado em (320, 240); divida o raio pela metade usando//; adicione 1 arings. - Após o loop, mostre
f"Rings: {rings}"em (20, 20). Ele exibeRings: 5.
Experimente você mesmo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Configure as coisas aqui, antes do loop do jogo.
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Altere as coisas aqui, uma vez por quadro.
screen.fill((20, 24, 48))
# Desenhe aqui, depois de preencher a tela.
pygame.draw.circle(screen, (150, 190, 255), (320, 240), 200, 2)
text = font.render("Rings: 1", True, (230, 230, 240))
screen.blit(text, (20, 20))
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
4Laços que Desenham
Repita com ForInício, Fim e PassoUse a Variável do LaçoUm Laço dentro de OutroConte com WhilePratique por conta própria: Playground de Pygame