Cześć. Napisałem sobie prostą gierkę, korzystając z biblioteki Allegro. Gra polega na klikaniu myszką w jakiś konkretną bitmapę, po kliknięciu odtwarzany jest dźwięk, a bitmapa przerysowuje się w innym, losowym miejscu. Gra kończy się, gdy timer się wyzeruje, wtedy wyskakuje odpowiednie okienko z allegro_message. Mój problem polega na tym, że gdy w ostatniej sekundzie kliknę na bitmapę, odtworzy się mój dźwięk, wyskakuje okienko message, ale dźwięk się powtarza, tak jakby się zacina. Próbowałem różnych rzeczy tj. stop_sample, destroy_sample, nawet dźwięk chciałem wyłączyć przez set_volume, ale nic z tego - dźwięk dalej się zacinał.
Ślicznie proszę o pomoc :)
Kod:
while(!key[KEY_ESC] && speed>-1){
clear_to_color(bufor,makecol(171,130,255));
masked_blit(kaczka,bufor,0,0,pozycja_x,pozycja_y,kaczka->w,kaczka->h);
textprintf_centre_ex(bufor,font,400,10,makecol(0,10,10),-1,"Ilosc trafien: %d", ilosc_trafien);
czas=speed*0.001 - (100*0.001)+1;
textprintf_centre_ex(bufor,font,600,10,makecol(0,240,240),-1,"%d",czas);
blit(bufor,screen,0,0,0,0,bufor->w,bufor->h);
mysz();
if(czy_kliknieto(pozycja_x,pozycja_y)) {
play_sample(kwak,255,137,1000,0);
ilosc_trafien++;
while( ( abs(nowy_x-pozycja_x)+abs(nowy_y-pozycja_y) )<300{
nowy_x=rand()%750;
nowy_y=rand()%550;
}
pozycja_x=nowy_x;
pozycja_y=nowy_y;
}
speed--;
if(speed==0) {
stop_sample(kwak);
set_volume(0,0);
int rekord=0;
ifstream plik("rekord.kupa");
plik>>rekord;
if(ilosc_trafien>rekord){
ofstream plik2("rekord.kupa", ios_base::trunc);
allegro_message("BRAWO! POBILES REKORD! TWOJ WYNIK TO: %d",ilosc_trafien);
plik2<<ilosc_trafien;
}
else {
allegro_message("DO POBICIA REKORDU BRAKLO CI: %d",(rekord-ilosc_trafien));
}
}
}