Ok i post the code,just don't care of the italian comment.
Here it comes:
I think that those 2 function is what contain the "bug".
Here it comes:
Function muovi_proiettile() For missile.bullet=Each bullet missile\durata=missile\durata-1 missile\positionx=missile\positionx missile\positiony=missile\positiony-missile\velocita counter=counter+1 DrawImage (missile\immagine,missile\positionx,missile\positiony) If missile\durata=<0 ;se il missile si e spostato di TOT unita cancellalo(per liberare memoria e tempo processore...) Delete missile Exit EndIf ;************************** ;inizio codice relativo alle collisioni,deve stare all'interno della funzione che muove i proiettili For a.alieno =Each alieno If ImagesCollide(bullet_image,missile\positionx,missile\positiony,0,ObjectFrames(fotogramma),a\posizionex,a\posizioney,0) a\vitalita=a\vitalita-missile\potenza ;quando il proiettile collide con l'alieno cala l'energia di esso Delete missile Exit ;esce se i type sono cancellati.... EndIf Next ;************************** ;fine codice collisioni Next End Function Function muovi_alieno() For a.alieno=Each alieno If a\vitalita=<0 crea_esplosione(a\posizionex,a\posizioney) hi_score=hi_score+a\punteggio Delete a Exit EndIf Select a\percorso Case 1 path_movement() Case 2 strightMov() End Select If jetdistrutto=False casuale=Rnd(0,200) ;generazione di un numero casuale If casuale=2 Then create_bullet(a\posizionex,a\posizioney,MouseX(),MouseY(),200,25) ;se e 2 ;la partenza del proiettile nemico sono le coordinate del nemico stesso EndIf Next End Function Function read_path() ;funzione che carica da file i dati dei nodi file=ReadFile("path_points.txt") ;apro il file creato precedentemente per la lettura If file=0 Then Goto uscita ;se non ho aperto nessun file o se il file non esiste esci dalla funzione pointer=0 ;puntatore al movimento nel file...aumenta di 4 in 4 siccome per un valore nei ;file vengono allocati automaticamente 4 byte di dati (numeri,stringhe ecc ecc) pointer2=0 ;puntatore al valore che,incrementando,fa si che leggo i valori nell'array ciclicamente For x=1 To max_path_points ;scorre tutti e 10 i valori SeekFile (file,pointer) ;mi muovo all'interno del file cosi a\pathx#[pointer2]=ReadFloat (file) ;leggo il valore x ,un float-number dentro il primo valore nell'array pointer=pointer+4 ;mi sposto al prossimo dato dentro il file a\pathy#[pointer2]=ReadFloat (file) ;leggo il valore y pointer2=pointer2+1 ;passo ai prossimi due valori nell'array pointer=pointer+4 ;mi sposto ancora al prossimo dato nel file Next CloseFile (file) ;chiudo il file .uscita End Function Function crea_esplosione(x,y) c.esplosione=New esplosione c\posizX=x ;the explosion position is the same as the alien position(considering mid-handle) c\posizY=y ;see up :P c\grandezza=1 End Function Function esplosione() For c.esplosione=Each esplosione Select c\grandezza Case 1 ;small If MilliSecs() > c\timer + 50 Then ;i use a slowdown of 50 millisecs c\timer=MilliSecs() c\frame=(c\frame+1) Mod 15 ;i loop trough the 7 frames of animation:this is a smaller explosion EndIf DrawImage explosion1,c\posizX,c\posizY,c\frame If c\frame => 14 Then Delete c End Select Next End Function
I think that those 2 function is what contain the "bug".