Menu
CoddyTech

배경 음악

Coddy Pygame 여정의 사운드와 게임의 손맛 섹션에 포함된 레슨. 23개 중 5번째.

음악은 효과음과 다릅니다. 음악은 길고, 반복 재생되며, 한 번에 트랙 하나만 재생됩니다. pygame에는 음악을 위한 별도의 플레이어인 pygame.mixer.music가 있습니다. Sound처럼 파일 전체를 불러오는 대신, 재생하는 동안 파일을 조금씩 읽습니다.

pygame.mixer.music.load("assets/music/level.ogg")
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)

load()는 트랙을 선택합니다. play()는 재생을 시작합니다. 괄호 안의 숫자는 트랙을 추가로 몇 번 반복할지 나타냅니다. play(-1)은 트랙을 계속 반복 재생하며, 배경 음악에는 이 방식이 필요합니다. play() 또는 play(0)은 트랙을 한 번 재생합니다.

루프 전에 음악을 한 번 시작하세요. 루프 안에서 play()를 호출하면 매 프레임마다 트랙이 처음부터 다시 시작됩니다. 음악에는 자체 볼륨이 있으며, pygame.mixer.music.set_volume()으로 0.0부터 1.0까지 설정할 수 있습니다. 효과음보다 음악 볼륨을 조금 낮추면 효과음이 더 잘 들립니다.

효과음은 음악 위에 계속 재생됩니다. 동전 소리와 트랙을 함께 들을 수 있습니다.

challenge icon

챌린지

쉬움

동전 게임에 배경 음악을 추가하세요. 반복문 앞에서:

  1. pygame.mixer.music.load()로 assets/music/level.ogg를 불러오세요.
  2. 음악 볼륨을 0.6으로 설정하세요.
  3. 반복 재생하려면 play(-1)로 음악을 시작하세요.

직접 해보기

import random
import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Coins")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)

coin_sound = pygame.mixer.Sound("assets/sounds/coin.ogg")

player = pygame.Rect(220, 160, 40, 40)
coin = pygame.Rect(100, 100, 16, 16)
score = 0

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player.x -= 5
    if keys[pygame.K_RIGHT]:
        player.x += 5
    if keys[pygame.K_UP]:
        player.y -= 5
    if keys[pygame.K_DOWN]:
        player.y += 5
    player.clamp_ip(screen.get_rect())

    if player.colliderect(coin):
        score += 1
        coin_sound.play()
        coin.x = random.randint(20, 444)
        coin.y = random.randint(50, 324)

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 210, 60), coin)
    pygame.draw.rect(screen, (90, 200, 120), player)
    score_text = font.render(f"Coins: {score}", True, (240, 240, 240))
    screen.blit(score_text, (10, 10))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

사운드와 게임의 손맛의 모든 레슨

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