Qualche suono non fa male e rende il gioco un po’ più interessante.
L’aggiunta di una qualche sonorità è abbastanza semplice, nel caso di esempio, ho aggiunto il rumore del tocco del paddle di destra e di sinistra con la palla e una breve colonna sonora in caso di vittoria.
# Inizializza Pygame
pygame.init()
#Gestione delle sonorità
#suono del paddle di sinistra al tocco della palla
hit_sound_paddle_left = pygame.mixer.Sound('Pong.mp3')
#suono del paddle di destra al tocco della palla
hit_sound_paddle_right = pygame.mixer.Sound('Ping.mp3')
#suono di vittoria
hit_victory = pygame.mixer.Sound('vict1.mp3')
Dopo l’istruzione pygame.init() ho aggiunto le righe relative al paddle di sinistra, quello di destra e al breve stacco musicale in caso di vittoria. Il codice non fa altro che caricare, per esempio sulla variabile hit_sound_paddle_left il suono “Pong.mp3” che ho scaricato da un qualsiasi sito che distribuisce file musicali gratuiti.
A questo punto ho modificato il codice seguente in tal modo.
# Collisione della palla con i paddle
if ball_pos.colliderect(left_paddle_pos) or ball_pos.colliderect(right_paddle_pos):
ball_x_speed = -ball_x_speed
if ball_pos.colliderect(left_paddle_pos):
hit_sound_paddle_left.play()
else:
hit_sound_paddle_right.play()
Come si vede, ho gestito con un if la verifica del tocco della palla con il paddle di destra o sinistra e quindi “suonato” con l’istruzione play() la variabile hit_sound_paddle_right o la variabile hit_sound_paddle_left.
Invece, per avviare la musica di vittoria in caso di vincita ho modificato il codice come descritto di seguito.
#Funzione per il messaggio di vittoria
def draw_victory_message(winner):
victory_color = (255, 0, 0) # Colore rosso per il messaggio di vittoria
if winner == "left":
message = "Ha vinto il giocatore 1!"
hit_victory.play()
else:
message = "Ha vinto il giocatore 2!"
hit_victory.play()
Sotto al messaggio “Ha vinto il giocatore 1!” o “Ha vinto il giocatore 2!” ho “suonato” la variabile hit_victory con l’istruzione play(), nulla di più semplice e intuitivo.