Sito web di notizie tecnologiche e videogames.

Pygame Shooter Parte 9: Aggiungere suoni e musica

42

Questo articolo è la nona parte del progetto PyShooter, oggi vedremo come aggiungere i suoni associati alle collisioni e la musica di background al nostro gioco.

Aggiungere suoni al videogioco

Prima di tutto abbiamo bisogno di specificare dove si trova la cartella che contiene i suoni.

# la cartella si chiama ‘snd’
snd_dir = path.join(path.dirname(__file__), 'snd')

Una volta specificata la cartella carichiamo i file audio, cominciamo a caricare il suono dello sparo:

shoot_sound = pygame.mixer.Sound(path.join(snd_dir, 'pew.wav'))

A questo punto abbiamo caricato il file e lo abbiamo associato alla variabile shoot_sound. Dato che questo suono verrà eseguito ogni volta che l’utente spara aggiungiamo al metodo shoot() della classe Player la seguente riga:

shoot_sound.play() 

Carichiamo anche i suoni per le esplosioni delle meteore:

expl_sounds = []
for snd in ['expl3.wav', 'expl6.wav']:
    expl_sounds.append(pygame.mixer.Sound(path.join(snd_dir, snd)))

NB: ci sono 2 file audio per le esplosioni. Al momento dell’esplosione ne verrà caricato uno random. Per far eseguire uno dei due suoni (random) nel momento di una collisione aggiungiamo la seguente riga:

hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
    for hit in hits:
        score += 50 - hit.radius
        random.choice(expl_sounds).play()
        m = Mob()
        all_sprites.add(m)
        mobs.add(m)

Aggiungere la musica

L’ultima cosa da fare è quella di aggiungere un po’ di musica in background per migliorare l’esperienza di gioco dell’utente. La musica viene gestita in un modo differente in quanto a differenza degli altri suoni essa deve essere eseguita di continuo. Carichiamo la musica:

pygame.mixer.music.load(path.join(snd_dir, 'tgfcoder-FrozenJam-SeamlessLoop.ogg'))
#settiamo il volume al 40%
pygame.mixer.music.set_volume(0.4)

Per eseguire la musica dall’inizio alla fine del gioco è sufficiente aggiungere una riga di codice prima del game loop:

pygame.mixer.music.play(loops=-1)

 Il parametro loop specifica quante volte il brano musicale deve essere ripetuto. Settando loops=-1 indichiamo che il brano deve essere ripetuto all’infinito.

Links

Dove trovare suoni per il gioco: sounds

Codice su GitHub: code

Articolo precedente: Pygame Shooter Parte 8: Disegnare il punteggio

 

Commenti