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));
            }

        }
    }