2016-11-21 3 views
1

Ich mache ein textbasiertes Abenteuerspiel in der Sprache C. Ich benutze CodeBlocks und das Spiel wird eine Konsolenanwendung sein.C - Ist Musik möglich?

Ist es möglich, ein "Hintergrundmusik" -Ding in das Programm aufzunehmen? Es würde das Spiel viel einprägsamer machen.

Ich weiß nur, dass die Musik im .wav-Format sein sollte. Aber ich habe nur C# und C++ - Lösungen für dieses Problem gefunden (und die C++ Lösung war ein Video auf YouTube mit sehr schlechter Qualität).

Also, wenn es in C möglich ist, kann mir dann jemand sagen, wie es geht?

Es würde sehr geschätzt werden! (ich möchte auch, dass die Musik sich selbst wiederholt, da sie nur 2 Minuten lang ist, aber ich möchte, dass sie immer und immer wieder läuft, solange das Programm läuft).

Danke für die Hilfe im Voraus!

+0

Bibliotheken! (Jazz Hände) vielleicht sdl –

Antwort

5

Es gibt keine übertragbaren Möglichkeiten, die Musik in C abzuspielen, was bedeutet, dass es sehr unterschiedliche Lösungen für DOS, Linux, Mac und Windows gibt. Hier ein kurzer Überblick über die Methoden. Alle von ihnen sind etwas komplex:

  • DOS: direkte PIT-Programmierung über 0x42/0x43 von Timer-Interrupt
  • Linux: Sie entweder ALSA oder Pulseaudio-Bibliotheken, und einen Hintergrund-Thread, Musik zu spielen brauchen. Oder starten Sie einfach einen Media Player wie Sox im Hintergrund, aber dann müssen Sie sicherstellen, dass der Benutzer sie installiert hat.
  • Mac OS: Ich habe keine Ahnung. Ich weiß, dass Sie open file.wav spawnen können, um Datei im Standardmusikspieler abzuspielen, aber das wird wahrscheinlich sehr lästig für den Benutzer sein.
  • Windows: Gute alte MCI-Befehle erfordern wahrscheinlich die geringste Anzahl von Codezeilen. Sie müssen ein verstecktes Fenster erstellen, damit MCI-Schnittstellen funktionieren.
+0

Ich benutze Windows 7. Können Sie mir irgendeine Art von Hilfe auf dieser MCI-Schnittstelle geben? Auch eine gute Seite, die es wirklich gut erklärt (da ich ein Anfängerprogrammierer bin) wäre sehr hilfreich! Vielen Dank! – Noxter