while문으로 세기
Coddy Pygame 여정의 게임 창에서 배우는 Python 섹션에 포함된 레슨. 32개 중 19번째.
while 반복문은 조건이 참인 동안 반복됩니다. 반복 횟수를 미리 알 수 없을 때 사용하세요:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1반지름은 매번 절반으로 줄어듭니다: 200, 100, 50, 25, 12. //는 나눗셈을 한 뒤 소수점 아래를 버리므로, 25 // 2는 12입니다. 그다음에는 6이 되고, 조건이 거짓이 되어 5개의 원을 그린 뒤 반복문이 끝납니다. rings는 원의 개수를 셉니다. 원을 그리는 호출에서 다섯 번째 숫자인 2는 채워진 원 대신 너비가 2픽셀인 테두리를 그립니다.
게임 루프도 창을 닫을 때까지 실행되는 while 반복문입니다. 한 프레임 안의 while 반복문은 빠르게 끝나야 합니다. 그렇지 않으면 프레임이 끝나지 않습니다. 반지름을 절반으로 줄이는 줄을 빼면 조건이 영원히 참으로 유지됩니다. 게임이 멈추고, Check에는 게임이 첫 프레임에 도달하지 못했다고 표시됩니다.
챌린지
중급그리기 부분에서 단일 고리를 while 루프로 바꾸세요:
radius = 200및rings = 0으로 시작하세요.radius > 10인 동안 색상(150, 190, 255), 너비 2로 (320, 240)을 중심으로 하는 윤곽선 고리를 그리세요.//를 사용해 반지름을 절반으로 줄이고rings에 1을 더하세요.- 루프가 끝난 뒤 (20, 20)에
f"Rings: {rings}"를 표시하세요. 결과는Rings: 5로 표시됩니다.
직접 해보기
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# 게임 루프가 시작되기 전에 여기서 필요한 것들을 설정하세요.
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 매 프레임마다 여기서 필요한 것들을 변경하세요.
screen.fill((20, 24, 48))
# 화면을 채운 후 여기서 그리세요.
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()
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
게임 창에서 배우는 Python의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드