Well, I've had a go at changing things that looked problematic but it's very difficult to debug code when you don't have the whole source and it's in another language. :)
Anyway, give it a go - not sure anything I changed would solve the flickering, though.
Anyway, give it a go - not sure anything I changed would solve the flickering, though.
Function muovi_proiettile() For missile.bullet = Each bullet missile\durata = missile\durata-1 If missile\durata=<0 Delete missile Else ;missile\positionx = missile\positionx ;This does nothing. missile\positiony = missile\positiony-missile\velocita ;counter = counter+1 ;This doesn't appear to be used. 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 Delete missile Exit EndIf DrawImage (missile\immagine,missile\positionx,missile\positiony) Next EndIf 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 Else 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 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 ;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 If c\frame => 14 Delete c Else DrawImage explosion1,c\posizX,c\posizY,c\frame EndIf End Select Next End Function