Musique de fond
Fait partie de la section Son et sensations de jeu du Journey Pygame de Coddy. Leçon 5 sur 23.
La musique est différente d'un effet sonore. Elle est longue, elle tourne en boucle et une seule piste est jouée à la fois. pygame dispose d'un lecteur distinct pour cela, pygame.mixer.music. Il lit le fichier petit à petit pendant la lecture, au lieu de le charger en entier comme un Sound.
pygame.mixer.music.load("assets/music/level.ogg")
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)load() sélectionne la piste. play() la démarre ; son nombre indique combien de fois supplémentaires la répéter. play(-1) la répète indéfiniment, ce qu'il faut pour la musique de fond. play() ou play(0) la joue une fois.
Démarre la musique une seule fois, avant la boucle. Appelée dans la boucle, play() redémarre la piste depuis le début à chaque image. La musique a son propre volume, réglé avec pygame.mixer.music.set_volume(), de 0.0 à 1.0. Une musique un peu moins forte que les effets permet à ceux-ci de ressortir.
Les effets sonores continuent d'être joués par-dessus la musique : le son de la pièce et la piste s'entendent ensemble.
Défi
FacileAjoute une musique de fond au jeu de pièces. Avant la boucle :
- Charge
assets/music/level.oggavecpygame.mixer.music.load(). - Règle le volume de la musique sur
0.6. - Lance-la avec
play(-1)pour qu’elle boucle.
Essayez vous-même
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()
Toutes les leçons de Son et sensations de jeu
4Tremblement de l’écran et flash d’impact
Tremblement de l’écranFlash d’impactArrêt sur impactRester subtilEntraînez-vous par vous-même : Playground Pygame