Rozdział 20 · Tworzenie gier z Pygame
Efekty dźwiękowe i muzyka
Krótkie efekty i muzyka tła w Pygame to dwa różne instrumenty z inną mechaniką odtwarzania wewnętrznego.
Za dźwięk w Pygame odpowiada osobny podmoduł pygame.mixer.
Podobnie jak reszta Pygame, ma własną obowiązkową inicjałację — zazwyczaj
już uwzględniony w ogólnym pygame.init(), ale z problemami z dźwiękiem
Warto to jasno podkreślić pygame.mixer.init().
Krótkie dźwięki i muzyka — to nie to samo
Pygame mają dwa różne instrumenty dźwiękowe i nie są one wymienne:
| pygame.mixer.Sound | pygame.mixer.music | |
|---|---|---|
| Dlaczego | Krótkie efekty: skok, strzał, moneta | Muzyka tła |
| Ładowanie | Całkowicie zapamiętana od razu | Streamowane, nie w pełni załadowane |
| Dźwięki jednoczesne | Kilka naraz, na różnych kanałach | Jeden strumień muzyki naraz |
| Typowe wyzwanie | sound.play() | pygame.mixer.music.play(loops=-1) |
zvuk_i_muzyka.py
zvuk_pryzhka = pygame.mixer.Sound("assets/sounds/prygok.wav")
pygame.mixer.music.load("assets/sounds/fon.mp3")
pygame.mixer.music.play(loops=-1) # -1 oznacza „pętlę bez końca”
# wewnątrz pętli gry, w momencie skoku:
zvuk_pryzhka.play()
Dźwięk ładuje się co klatkę – zauważalne zacięcia
pygame.mixer.Sound(...) odczytuje plik z dysku, co jest zauważalnie wolniejsze niż odtwarzanie już załadowanego dźwięku. Wszystkie dźwięki muszą zostać załadowane raz, przed rozpoczęciem pętli gry (podobnie jak obrazy z sekcji 20.19), i zapisane w zmiennych lub słowniku, a w pętli tylko wywołane .play() dla już załadowanego obiektu. Ładowanie zasobu w pętli jest jedną z najczęstszych przyczyn niewytłumaczalnych spadków klatek w pierwszych projektach na Pygame.Praktyka: Efekty dźwiękowe i muzyka w tle
Pygame otwiera natywne okno Python – uruchomione lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie