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

		}
	}