Menu
CoddyTech

프레임 카운터

Coddy Pygame 여정의 스프라이트와 이미지 섹션에 포함된 레슨. 36개 중 26번째.

캐릭터가 화면을 가로질러 걷지만 다리는 전혀 움직이지 않습니다. 항상 frames[0]만 보여 주기 때문입니다. 매번 다른 프레임을 보여 주면 다리에 비해 너무 빠른 초당 60회의 깜박임이 생깁니다. 대신 카운터를 사용해 각 그림을 몇 프레임 동안 유지하세요.

timer += 1
if timer == 10:
    timer = 0
    frame_index = (frame_index + 1) % len(frames)

timer는 프레임 수를 셉니다. 10프레임마다 다시 0부터 시작하고 frame_index는 다음 그림으로 넘어갑니다. % len(frames)는 마지막 프레임 다음에 다시 0으로 돌아가게 하므로, 목록에 프레임이 몇 개 있든 걷기가 계속 반복됩니다.

frames[frame_index]를 그리세요. 초당 60프레임이면 각 자세가 6분의 1초 동안 표시되어 차분하게 걷습니다. 10보다 작은 수를 사용하면 다리가 더 빠르게 움직입니다.

challenge icon

챌린지

중급
  1. 루프 전에 frame_index = 0과 timer = 0을 설정합니다.
  2. 매 프레임마다 timer에 1을 더합니다. 10에 도달하면 다시 0으로 설정하고 % len(frames)를 사용해 순환하면서 frame_index를 다음 프레임으로 이동합니다.
  3. frames[frame_index]를 (x, 300) 위치에 그립니다.

직접 해보기

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Walk Cycle")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))
x = 0

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    x += 2
    if x > 640:
        x = -72

    screen.fill((20, 22, 40))
    screen.blit(frames[0], (x, 300))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

스프라이트와 이미지의 모든 레슨

직접 연습해 보세요: Pygame 플레이그라운드