Som em um Evento
Parte da seção Som e sensação de jogo do Journey de Pygame da Coddy. Lição 2 de 23.
Um som pertence a um momento: a moeda é coletada, a porta se abre, o inimigo é atingido. Seu código já tem um lugar para cada momento: o if que muda o jogo quando isso acontece. Toque o som dentro desse mesmo if:
if player.colliderect(coin):
score += 1
coin_sound.play()
coin.x = random.randint(20, 444)O if é verdadeiro por apenas um quadro, porque a moeda se move para longe nesse mesmo quadro. Assim, o som começa uma vez para cada moeda.
Se for tocado em qualquer outro lugar, o som perde o momento certo. No código de desenho, abaixo de if score > 0:, ele começaria novamente a cada quadro após a primeira moeda: 60 vezes por segundo, um zumbido contínuo.
Desafio
FácilO quadrado verde coleta moedas com as teclas de seta. Adicione um som para cada moeda:
- Antes do loop, carregue
assets/sounds/coin.oggemcoin_sound. - Reproduza-o no
ifque coleta a moeda, uma vez por moeda.
Experimente você mesmo
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Som e sensação de jogo
4Vibração da Tela e Flash de Impacto
Vibração da TelaFlash de ImpactoPausa no ImpactoMantenha a DiscriçãoPratique por conta própria: Playground de Pygame