Allegro sound - so gehts ;)
-
Hallo
Ich lese immerwieder, dass sich viele damit schwer tun sound in Allegro einzubingen - so wirds gemacht
#include <allegro.h> bool main_is_running = false; int main() { allegro_init(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL); // install sound install_timer(); install_keyboard(); install_mouse(); SAMPLE *beep = load_wav("beep.wav"); // load wav play_sample(beep, 255, 0, 1000, 0); //play sound // 1000 = speed normal while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } } } END_OF_MAIN();
ich hoffe ich konnte weiter helfen - ich benutze allegro 4.22
-
HEY !!!
DANKE, Dass hab ich schon lange gesuchtdanke danke danke
endlich mal nen einfacher , verständlicher Code zum ausführen
-
Wie lange darf ein WAV-File bei allegro sein? Bei mir stürzt es immer ab.
-
Erstmal nutzt du eine alte Allegro Version. 5.0.7 ist der aktuelle Release, und mit dem wird Sound AFAIK auch anders abgespielt (zumindest Präfixe wurden den Funktionen hinzugefügt) .
Was mir noch zu deinem Code auffällt:
- Das Semikolon hinter END_OF_MAIN() sollte weg. Das kann zu unnötigen Warnungen führen.
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
break
in das substatement des if-Statements setzen, und stattmain_is_running
einfach eintrue
als Bedingung für die Schleife.
Kurz, statt
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } }
Einfach
while(true) //Bzw. for(;;), je nach Geschmack if (key[KEY_ESC]) break;
- Zeile 15 ist überflüssig.
-
Sone schrieb:
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
break
in das substatement des if-Statements setzen, und stattmain_is_running
einfach eintrue
als Bedingung für die Schleife.
Kurz, statt
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } }
Einfach
while(true) //Bzw. for(;;), je nach Geschmack if (key[KEY_ESC]) break;
Und wenn anschließend noch etwas anders geschehen soll / muss?
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } do_something_before_next_frame(); }
(
main_is_running
ist in diesem Kontext m. M. n. ein schlecht gewählter Name)
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
-
Knecht Purpecht schrieb:
Sone schrieb:
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
break
in das substatement des if-Statements setzen, und stattmain_is_running
einfach eintrue
als Bedingung für die Schleife.
Kurz, statt
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } }
Einfach
while(true) //Bzw. for(;;), je nach Geschmack if (key[KEY_ESC]) break;
Und wenn anschließend noch etwas anders geschehen soll / muss?
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } do_something_before_next_frame(); }
Dann fragst du eben nachdem
do_something_before_next_frame()
ausgeführt wird. Dann wird es nämlich noch ausgeführt, weißt du.
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
-
Sone, dir ist schon klar, dass der Thread über ein Jahr alt ist?
-
necromanzer schrieb:
Sone, dir ist schon klar, dass der Thread über ein Jahr alt ist?
Verdammt..... nicht schon wieder....
Nicht meine Schuld. Der Kerl der darauf geantwortet hat hätte nen neuen Thread eröffnen müssen.Sowas bemerkt man nicht so schnell.
-
Sone schrieb:
Knecht Purpecht schrieb:
Sone schrieb:
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
break
in das substatement des if-Statements setzen, und stattmain_is_running
einfach eintrue
als Bedingung für die Schleife.
Kurz, statt
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } }
Einfach
while(true) //Bzw. for(;;), je nach Geschmack if (key[KEY_ESC]) break;
Und wenn anschließend noch etwas anders geschehen soll / muss?
while(!main_is_running) { if (key[KEY_ESC]) { main_is_running = true; } do_something_before_next_frame(); }
Dann fragst du eben nachdem
do_something_before_next_frame()
ausgeführt wird. Dann wird es nämlich noch ausgeführt, weißt du.Ich hatte mir beim Schreiben schon gedacht, dass diese Antwort kommt...
Und was ist, wenn ich vorher UND nacher noch etwas tun möchte?
- main_is_running ist völlig überflüssig. Bei der Schleife kannst du ganz einfach ein
-
Und was ist, wenn ich vorher UND nacher noch etwas tun möchte?
Dann fragst du nachdem alles getan ist.
Ich glaube aber ich habe die letzte Frage nicht ganz verstanden. Beispiel?
-
You made my day sag ich nur