Menu
CoddyTech

Lautstärke

Teil des Abschnitts Sound und Spielgefühl der Pygame-Journey von Coddy. Lektion 3 von 23.

Jeder Sound hat eine eigene Lautstärke, von 0.0 (stumm) bis 1.0 (so laut wie die Datei). Ein neuer Sound startet mit 1.0. Ändere sie mit set_volume():

step_sound.set_volume(0.3)

Verwende es, um die Lautstärke in einem Spiel auszubalancieren. Ein Schrittgeräusch, das ständig abgespielt wird, sollte leise sein; eine seltene Explosion kann laut sein. Ein Wert über 1.0 zählt als 1.0, daher wird set_volume(5) mit voller Lautstärke abgespielt, nicht fünfmal lauter.

Auf einem Einstellungsbildschirm wird die Lautstärke oft von 0 bis 10 angegeben, was auf dem Bildschirm übersichtlicher ist. Teile durch 10, um den Wert des Sounds zu erhalten:

volume = 5
click_sound.set_volume(volume / 10)

Der Sound behält seine Lautstärke bei, bis du sie erneut festlegst. Wenn der Spieler volume ändert, rufe set_volume() erneut auf, sonst wird der Sound mit der alten Lautstärke abgespielt. get_volume() zeigt dir die aktuelle Lautstärke eines Sounds an.

challenge icon

Aufgabe

Einfach

Mit den Pfeiltasten nach oben und unten änderst du volume von 0 bis 10, und mit der Leertaste wird der Klickton abgespielt, damit du ihn hören kannst. Lass den Klickton der Einstellung folgen:

  1. Rufe nach volume = 5 click_sound.set_volume(volume / 10) auf.
  2. Rufe die Funktion erneut auf, sobald du volume mit der Pfeiltaste nach oben oder unten änderst.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Volume")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)

click_sound = pygame.mixer.Sound("assets/sounds/click.ogg")
volume = 5

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP and volume < 10:
                volume += 1
            elif event.key == pygame.K_DOWN and volume > 0:
                volume -= 1
            elif event.key == pygame.K_SPACE:
                click_sound.play()

    screen.fill((30, 30, 46))
    label = font.render(f"Volume: {volume}", True, (240, 240, 240))
    screen.blit(label, (40, 120))
    for i in range(10):
        color = (90, 200, 120) if i < volume else (60, 60, 80)
        pygame.draw.rect(screen, color, (40 + i * 40, 170, 32, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Sound und Spielgefühl

Übe selbstständig: Pygame-Playground