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.
Tantangan
MudahTambahkan musik latar ke game koin. Sebelum perulangan:
- Muat
assets/music/level.oggdenganpygame.mixer.music.load(). - Atur volume musik ke
0.6. - 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
4Guncangan Layar dan Kilatan Saat Terkena Serangan
Guncangan LayarKilatan Saat Terkena SeranganJeda BenturanJangan BerlebihanLatihan sendiri: Playground Pygame