Page 2 sur 2
Publié : mar. 26/mai/2009 16:33
par djes
Ta liste n'est ni globale ni shared, donc invisible depuis l'intérieur de ta procédure.
Tu peux aussi utiliser foreach pour parcourir la liste, sans avoir besoin de resetlist

Publié : mar. 26/mai/2009 16:48
par Atomo
Ta procédure ne peut pas accéder à tes listes car elles n'ont pas été déclarées en global.
edit : grilled by djes.

Publié : mar. 26/mai/2009 16:51
par TazNormand
Je pense qu'il serait bon de corriger le tuto sur les listes chainées de Crystal Noir
Publié : mar. 26/mai/2009 17:20
par Backup
corrigé !

Publié : mar. 26/mai/2009 17:34
par PAPIPP
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
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
A+