20. Soundeffekte¶
Das Hinzufügen von Sound zu deinem Spiel ist nicht zu schwierig. Es gibt zwei Schritte:
Lade den Sound
Spiele den Sound ab
Für diese Beispiele verwende ich eine Sounddatei mit dem Namen laser.ogg
, die Sie hier herunterladen können ../../_static/laser.ogg. Stelle sicher, dass du die Datei im selben Verzeichnis wie das Python-Programm speicherst, das versucht, sie zu verwenden.
20.1. Laden von Sounds¶
Der folgende Code erstellt eine neue Variable mit dem Namen laser_sound
. Er ruft die Funktion load_sound
auf und übergibt den Dateinamen unseres Sounds.
laser_sound = arcade.load_sound("laser.ogg")
Damit dies funktioniert, musst du die eine Sounddatei mit dem Namen laser.ogg
in dasselbe Verzeichnis wie deine Python-Datei herunterladen. Der Rechner findet den Sound nicht, wenn sie sich in einem anderen Verzeichnis befindet.
Dadurch wird der Sound geladen, aber nicht abgespielt. Wir wollen den Sound nur einmal laden. Wir möchten den Sound nicht jedes Mal von der Festplatte laden, wenn wir ihn abspielen. Er kann im Speicher bleiben.
20.2. Sounds abspielen¶
Der Code zum Abspielen von Sounds ist einfach. Rufe einfach die Funktion play_sound
auf und übergebe die Variable, die wir auf den geladenen Sound gesetzt haben:
arcade.play_sound(laser_sound)
Wenn man die beiden zusammenfasst, könnte man denken, wir könnten dies tun, um Sounds abzuspielen:
import arcade
laser_sound = arcade.load_sound("laser.ogg")
arcade.play_sound(laser_sound)
Das geht aber nicht. Das Programm endet, bevor der Sound abgespielt werden kann. Die Funktion play_sound
pausiert nicht, während der Sound abgespielt wird, sie kehrt sofort zurück und das Programm geht weiter. Wir hatten ein ähnliches Problem, als wir ein Fenster öffneten, und wir können es auf dieselbe Weise lösen:
1 2 3 4 5 6 | import arcade
arcade.open_window(300, 300, "Sound Demo")
laser_sound = arcade.load_sound("laser.ogg")
arcade.play_sound(laser_sound)
arcade.run()
|
Aus diesem Grund empfehle ich, den Sound in der __init__
-Methode der Klasse zu laden, die den Sound abspielen soll.
20.3. Sounds auslösen¶
Wir wollen den Sound abspielen, wenn etwas passiert. Also lädt dieses Beispiel den Sound einmal während des __init__
. Wenn der Benutzer die Leertaste drückt, wird der Sound ausgelöst.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import arcade
class MyApplication(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height, "Trigger Sound With Key")
# Load the sound when the application starts
self.laser_sound = arcade.load_sound("laser.ogg")
def on_key_press(self, key, modifiers):
# If the user hits the space bar, play the sound that we loaded
if key == arcade.key.SPACE:
arcade.play_sound(self.laser_sound)
def main():
window = MyApplication(300, 300)
arcade.run()
main()
|
20.4. Sounds finden¶
Tolle Webseiten, um kostenlose Sounds für dein Programm zu finden, sind:
www.freesound.org ist in Ordnung, erfordert aber ein Login, was ziemlich nervt.
Kenney.nl hat ein paar kostenlose Soundpakete, die du herunterladen kannst, und einige, die man günstig kaufen kann.
20.5. Dateiformate für Sounds¶
Es gibt verschiedene Arten von Audiodateiformaten (sound file formats), in denen man Sounds finden kann:
.wav
- Dies ist ein rohes „Wave“ -Format. Der Sound wird überhaupt nicht komprimiert. Man benötigt keine spezielle Bibliothek, um den Sound zu dekomprimieren, aber die Sounddatei selbst kann ziemlich groß sein..mp3
- MPEG Layer III Audio (mp3) ist eines der beliebtesten komprimierten Audiodateiformate. Durch dieses Dateiformat wurde Online-Musik immer beliebter. Einige der Komprimierungsalgorithmen sind jedoch patentiert, so dass sie für freie Software nicht geeignet sind..m4a
- Apples Dateiformat für komprimiertes, aber ungeschütztes Audio..ogg
- Eine Audiodatei, die Ogg-Vorbis (Open Source) zur Komprimierung verwendet. Eine weniger beliebte, aber patentfreie Methode zur Tonspeicherung.
Arcade sollte in der Lage sein, Dateien im MP3- oder Ogg-Format abzuspielen. Konvertiere den Sound in ein rohes WAV-Format, wenn du damit Probleme hast.
Wenn du Dateiformate konvertieren oder eine Audiodatei zuschneiden musst, empfehle ich die Verwendung des Programms Audacity.