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. :lol:

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+