Mon but est de construire une grille d'images 5x5. Dans le code suivant, row
, col
et rowcol
ont été créés en tant que variables locales à l'image-objet, et newcol
, newrow
et cats
sont globaux. (Soit dit en passant, est-il possible de dire quelles sont les variables locales et qui sont globales? Il est facile d'oublier ou de faire des erreurs.)Une grille de clones
Le résultat est une grille 5x1 seulement, comme on le voit ici.
Je suis pas clair quant à l'ordre d'exécution de ces déclarations. Est-ce que when I start as a clone
est appelé avant ou après add_cat
est appelé la deuxième fois? Ma conclusion provisoire est qu'elle est appelée après, mais les variables globales du clone semblent contenir leurs valeurs d'avance à la place.
Lorsque j'ai tenté de le déboguer avec les commandes ask
et say
et wait
, les résultats variaient énormément. L'ajout de telles pauses à certains endroits a complètement résolu le problème, ce qui a donné une grille de 5x5. Dans d'autres endroits, ils ont causé une grille 1x5.
La question principale est: Comment résoudre ce problème afin qu'il produise une grille 5x5?
bonne explication, me fixant droit quelques points sur la façon dont fonctionne Scratch. Quelque chose de similaire à votre solution récursive a fonctionné dans mon projet. Notez que la récursivité offre plus que de la nouveauté. Mon projet actuel nécessite plusieurs branches, ce qui n'est pas possible avec une approche procédurale simple. Cela pourrait être fait en utilisant une liste comme une pile first-in-first-out, mais c'est au moins aussi complexe que l'utilisation de la récursivité et moins élégante. –