Menu
CoddyTech

Musik Latar

Termasuk bagian Suara dan Sensasi Bermain dalam perjalanan Pygame di Coddy. Pelajaran 5 dari 23.

Musik berbeda dari efek suara. Musik berlangsung lama, berulang, dan hanya satu track yang diputar pada satu waktu. pygame memiliki pemutar terpisah untuk musik, pygame.mixer.music. Pemutar ini membaca file sedikit demi sedikit saat musik diputar, alih-alih memuat seluruh isinya seperti Sound.

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

load() memilih track. play() memulainya, angkanya menunjukkan berapa kali lagi track akan diulang. play(-1) mengulanginya tanpa batas, sesuai kebutuhan musik latar. play() atau play(0) memutarnya satu kali.

Mulai musik satu kali, sebelum perulangan. Jika dipanggil dalam perulangan, play() memulai ulang track dari awal pada setiap frame. Musik memiliki volume tersendiri, yang diatur dengan pygame.mixer.music.set_volume(), dari 0.0 hingga 1.0. Musik yang sedikit lebih pelan daripada efek suara membuat efek suara lebih menonjol.

Efek suara tetap diputar di atas musik: suara koin dan track terdengar bersamaan.

challenge icon

Tantangan

Mudah

Tambahkan musik latar ke game koin. Sebelum perulangan:

  1. Muat assets/music/level.ogg dengan pygame.mixer.music.load().
  2. Atur volume musik ke 0.6.
  3. Mulai musik dengan play(-1) agar musik berulang.

Coba sendiri

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()

Semua pelajaran di Suara dan Sensasi Bermain

Latihan sendiri: Playground Pygame