Sonido al ocurrir un evento
Parte de la sección Sonido y sensaciones del juego del Journey de Pygame de Coddy. Lección 2 de 23.
Un sonido pertenece a un momento: se recoge la moneda, se abre la puerta, se golpea al enemigo. Tu código ya tiene un lugar para cada momento: el if que cambia el juego cuando ocurre. Reproduce el sonido dentro de ese mismo if:
if player.colliderect(coin):
score += 1
coin_sound.play()
coin.x = random.randint(20, 444)El if es verdadero durante un solo fotograma, porque la moneda se mueve en ese mismo fotograma. Así que el sonido se reproduce una vez por moneda.
Si se reproduce en otro lugar, el sonido pierde su momento. En el código de dibujo bajo if score > 0:, volvería a empezar en cada fotograma después de la primera moneda: 60 veces por segundo, un zumbido largo.
Desafío
FácilEl cuadrado verde recoge monedas con las teclas de flecha. Añade un sonido para cada moneda:
- Antes del bucle, carga
assets/sounds/coin.oggencoin_sound. - Reprodúcelo en el
ifque recoge la moneda, una vez por moneda.
Pruébalo tú mismo
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)
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.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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Sonido y sensaciones del juego
1Efectos de sonido
Cargar un sonidoSonido al ocurrir un eventoVolumen del sonidoSonidos y teclas presionadas4Sacudida de pantalla y destello de impacto
Sacudida de pantallaDestello de impactoPausa tras el impactoMantén la sutilezaPractica por tu cuenta: Playground de Pygame