Sound bei einem Ereignis
Teil des Abschnitts Sound und Spielgefühl der Pygame-Journey von Coddy. Lektion 2 von 23.
Ein Geräusch gehört zu einem Moment: Die Münze wird aufgenommen, die Tür öffnet sich, der Gegner wird getroffen. Dein Code hat bereits einen Platz für jeden Moment: das if, das das Spiel verändert, wenn es passiert. Spiele den Ton im selben if ab:
if player.colliderect(coin):
score += 1
coin_sound.play()
coin.x = random.randint(20, 444)Das if ist nur einen Frame lang wahr, weil sich die Münze im selben Frame wegbewegt. Der Ton startet also einmal pro Münze.
Wird der Ton an einer anderen Stelle abgespielt, verliert er seinen passenden Moment. Im Zeichencode unter if score > 0: würde er nach der ersten Münze in jedem Frame erneut starten: 60 Mal pro Sekunde, ein langes Brummen.
Aufgabe
EinfachDas grüne Quadrat sammelt mit den Pfeiltasten Münzen. Gib jeder Münze einen Sound:
- Lade vor der Schleife
assets/sounds/coin.oggincoin_sound. - Spiele ihn in der
if-Anweisung, die die Münze einsammelt, einmal pro Münze ab.
Probier es selbst
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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Sound und Spielgefühl
Übe selbstständig: Pygame-Playground