Page 1 sur 1

[RESOLU]Imbrication de Foreach.

Publié : sam. 10/déc./2011 21:04
par LeCaravage
Bonjour,
Je sollicite votre aide pour savoir comment on fait pour imbriquer des ForEach qui parcourent une même liste chaine de structure. Je m'explique :
J'ai crée une seule liste chaînée pour stocker tous mes sprites présents sur l'aire de jeu.
Dans la boucle principale, je fais un "ForEach" pour traiter un à un les sprites ennemis qui sont en mode "je tape sur un autre sprite". Le souci c'est que dans la même boucle je dois décrémenter le compteur de vie du sprite (ou élément de la liste chaînée) qui se fait taper dessus. Or, pour le trouver je dois faire un autre ForEach et le problème c'est que lorsque j'ai fini avec le compteur de vie de ce sprite je dois revenir à ma boucle principale de ForEach à la même position pour continuer à chercher d'autres sprites ennemis.

Je sais pas si j'etais assez clair : Donc pour résumer et faire simple, j'imbrique 2 ForEach qui scan la même liste chainee et quand j'ai fini le ForEach de niveau 2 je dois revenir à mon ForEach principal à la même position et ainsi pouvoir finir la boucle comme si de rien n'était.

Merci de votre aide.

Re: Imbrication de Foreach.

Publié : sam. 10/déc./2011 21:20
par comtois
peut-être avec PushListPosition() ?

Code : Tout sélectionner

  NewList Numbers()
  AddElement(Numbers()): Numbers() = 1
  AddElement(Numbers()): Numbers() = 2
  AddElement(Numbers()): Numbers() = 5
  AddElement(Numbers()): Numbers() = 3
  AddElement(Numbers()): Numbers() = 5
  AddElement(Numbers()): Numbers() = 2
  
  ; A simple duplicate elimination using a nested iteration
  ;
  ForEach Numbers()
    Value = Numbers()
    PushListPosition(Numbers())
    While NextElement(Numbers())
      If Numbers() = Value 
        DeleteElement(Numbers())
      EndIf
    Wend
    PopListPosition(Numbers())
  Next
  
  ForEach Numbers()
    Debug Numbers()
  Next

Re: Imbrication de Foreach.

Publié : sam. 10/déc./2011 21:37
par LeCaravage
C'est fou, j'imaginais un truc super compliqué.
Merci de ta réponse (rapide!) comtois :D