Tu peux aussi utiliser foreach pour parcourir la liste, sans avoir besoin de resetlist
Profondeur d'un sprite ("axe Z") + Playfield/Layer
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Bonjour à tous
Dans une procédure les listes chainées strars() et stars2 ne sont pas connues
il faut soit les placer en Global soit en paramètre de la proc.
on peut même changer leur nom dans la procédure
Exemple en gardant le même nom
A+
Dans une procédure les listes chainées strars() et stars2 ne sont pas connues
il faut soit les placer en Global soit en paramètre de la proc.
on peut même changer leur nom dans la procédure
Exemple en gardant le même nom
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