Nu ar fi ceva gresit in esenta, doar ca nu exista nimic care sa spuna ca sunetul de fundal, "muzica", ar trebui sa continue.
Practic, in forma scrisa de tine se intampla urmatoarele:
In primul rand ai creat o fereastra numita "joc" prin expresia care contine functia specifica:
show_window_game("Joc");
Aceasta fereastra ar trebui sa ramana activa "in timp ce" se desfasoara ceva, adica "while" in engleza inseamna in timp ce, dar revin imediat in legatura cu acest lucru.
Ai creat obiectul de tip sunet numit "fundalmenu":
sound fundalmenu;
Ai trecut apoi la metodele obiectului creat:
fundalmenu.stream("fundalmenu.wav"); //se incarca in mod stream fisierul numit "fundalmenu.wav".
fundalmenu.play_looped(); //se porneste sunetul in mod looped, adica repetare la nesfarsit atata timp cat nu este intrerupt prin metoda "stop" sau prin functia
exit(), in timp ce se desfasoara scritpul.
fundalmenu.volume=-13; //ai setat proprietatea volum la minus 13, 0 fiind volumul normal al fisierului.
Dupa toate acestea a fost incheiat tot scriptul, fara nici o continuitate.
Mai jos este o varianta pentru a auzi sunetul de fundal pana la apasarea tastei "s". De mentionat ca e neaparat ca un fisier numit "fundalmenu.wav" sa existe in acelasi folder cu fisierul care are extensia ".bgt".
Dupa cod dau mai multe explicatii.
Cod: Selectaţi tot
void main()
{
show_game_window("joc");
sound fundalmenu;
fundalmenu.stream("fundalmenu.wav");
fundalmenu.volume=-13;
fundalmenu.play_looped();
while (true)
{
wait(5);
if(key_pressed(KEY_S))
{
exit();
}
}
}
Pana la randul "while(true)" nu este ceva diferit fata de ce ai facut tu, doar ca am pus proprietatea volum inainte de instructiunea "play_looped()", astfel incat pe cand incepe, volumul sa fie deja setat. Altfel, porneste sunetul, iar pentru o fractiune de secunda apuca sa fie la volumul standard, "0", apoi se da brusc la "minus 13".
while(true)
Zice ca atata vreme cat e adevarat, adica atata vreme cat fereastra "Joc" este activa, am putea spune, sa se intample ceva.
Se deschide cu acolada blocul de instructiuni din "while".
Aici este in primul rand un
wait(5);
adica asteapta 5 milisecunde repetitiv atata vreme cat "while(true)".
Fara aceasta asteptare, procesorul ar fi utilizat la maxim, iar sunetul ar putea sacada la unele calculatoare.
Tot in blocul "while" este o conditie if.
Acest if spune ca:
Daca se apasa tasta "s", sa se intample ceva.
if(key_pressed(KEY_S))
Deci, functia "key_pressed()" are intre parantezele rotunde parametrul tasta. Denumirile tuturor tastelor pot fi gasite in Helpul BGT, in Appendix A, Keyboard Constants. Pentru tasta "s" numele este "KEY_S", cu litere mari.
Se deschide apoi iar acolada pentru a spune ce sa se intample daca se apasa "s".
Aici apare:
exit();
aceasta functie scoate din ram tot ce tine de script, in cazul de fata distruge fereastra "Joc" si obiectul "fundalmenu".
Se inchid apoi trei acolade:
una de la "if",
alta de la "while",
ultima de la "void main()".
Incearca sa urmaresti rand cu rand, caracter cu caracter codul si pe baza lui mai fa ceva modificari astfel incat sa intelegi cum stau lucrurile.
Asa te prinzi de limbajul asta, facand tot felul de incercari cu rabdare si chef.
Poti intreba exact despre un rand pe care nu il intelegi, despre o idee etc.
Succes!