Tu peux aussi utiliser foreach pour parcourir la liste, sans avoir besoin de resetlist

Code : Tout sélectionner
;Tutorial Listes Chaînées
;Initialisation des composants
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
Structure Etoile
posx.f
posy.f
vitesse.f
EndStructure
NewList Stars.Etoile()
NewList Stars2.Etoile()
;Constantes
#Star = 1
#Star2 = 2
;Création de la fenêtre principale
SetRefreshRate(60)
MaFenetre = OpenScreen(800, 600, 32, "Test")
If MaFenetre = 0
MessageRequester("Erreur", "Impossible d'ouvrir une fenêtre DirectX", #PB_MessageRequester_Ok)
EndIf
Procedure DisplayEtoile(List stars.etoile(), List stars2.etoile())
ResetList(Stars())
While NextElement(Stars())
If Stars()\posy>600
Stars()\posy = -5
EndIf
DisplayTransparentSprite(#Star, Stars()\posx, Stars()\posy)
Stars()\posy + Stars()\vitesse
Wend
ResetList(Stars2())
While NextElement(Stars2())
If Stars2()\posy>600
Stars2()\posy = -5
EndIf
DisplayTransparentSprite(#Star2, Stars2()\posx, Stars2()\posy)
Stars2()\posy + Stars2()\vitesse
Wend
EndProcedure
;Chargement des sprites
CreateSprite(#star, 1, 1)
StartDrawing(SpriteOutput(#star))
Plot(0, 0, RGB(255, 255, 255))
StopDrawing()
CreateSprite(#star2, 1, 1)
StartDrawing(SpriteOutput(#star2))
Plot(0, 0, RGB(120, 120, 120))
StopDrawing()
For i = 1 To 150
AddElement(Stars())
AddElement(Stars2())
Stars()\posx = Random(800)
Stars()\posy = Random(600)
Stars()\vitesse = 2
Stars2()\posx = Random(800)
Stars2()\posy = Random(600)
Stars2()\vitesse = 1
Next
Repeat
ClearScreen(RGB(0, 0, 0))
DisplayEtoile(stars(),stars2())
ExamineKeyboard()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End