Scratch : découvrir les clones
Avec Scratch, on apprends à créer des scripts qui animent sprite (traduit par lutin jusqu’à récemment). Ajouter des scripts à un sprite pour lui donner un comportement finit par être assez intuitif. Mais il arrive un moment où on a besoin de plusieurs exemplaires du même sprite. Le premier réflexe est alors de dupliquer le sprite, et donc tous les scripts. Ce n’est pas la bonne démarche, ce qu’il faut dans ces cas, c’est utiliser des clones.
Créer un clone, c’est créer une copie d’un sprite. Cette copie aura les mêmes costumes, sons et scripts que l’original mais sera totalement indépendant. Voyons dans ce premier billet ce que sont les clones.
Qu’est-ce qu’un clone ?
Un clone est une copie d’un sprite. Le sprite original sera appelé le parent. La copie aura les mêmes costumes, sons et scripts que le parent mais en sera totalement indépendant.
Créer un clone signifie donc dupliquer un sprite à l’exécution du projet.
Comment créer un clone ?
Il suffit d’utiliser le bloc Créer un clone de…. Ce bloc permet de créer un clone de soi-même (c’est à dire du sprite qui exécute ce bloc) ou d’un autre sprite. N’importe quel script peut créer un clone d’un sprite. Ainsi, pour préparer une scène, la création des clones pourra être dans les scripts de la scène plutôt que d’un clone.
Tout sprite peut être cloné.
Que peut-on faite avec un clone ?
On peut donc créer un clone et une fois créé, un clone ayant les mêmes scripts que le parent, il peut faire tout ce que peut faire le parent. Mais en plus, un clone peut se supprimer de la scène. Un clone ne peut se supprimer que lui-même.
Attention cependant, le parent n’est pas un clone, il n’est donc pas possible de le supprimer. On parle bien ici du parent original, un clone pouvant aussi produire des clones, il peut être parent lui même… Oui, c’est là où ça se complique et où je ne trouve pas de vocabulaire plus adapté.
Un clone peut également déclencher des actions lorsqu’il est créé grâce au bloc Quand je commence comme un clone.
À quoi servent les clones ?
Lorsque vous avez besoin de plusieurs exemplaires d’un sprite, le premier réflexe est simplement de les dupliquer. C’est possible par le menu contextuel sur les sprites. Mais dupliquer un sprite va entrainer un problème à long terme : dès que vous aurez à charger le scripte d’un sprite, il faudra le changer sur toutes les copies.
Si à la place vous utilisez les clones, vous n’aurez qu’une seule copie des scriptes, si vous devez les modifier, ce sera en un seul endroit.
Les clones permettent également de créer un nombre de sprites qui n’est pas connu lors de la création du projet mais à son exécution. C’est donc très pratique pour, par exemple, faire poper les ennemis dans un jeu.
Un exemple simple
Je n’illustrerai ce billet que par un exemple simple. Si notre scène doit avoir un nuage, je vais lui ajouter un script pour positionner le sprite après l’évènement Quand le drapeau vert est cliqué.
Si je dois ajouter un second nuage, je pourrai simplement dupliquer ce sprite avec le même script. Mais je peux aussi limiter les sprites et créant des clones avec le script ci-dessous.
Au démarrage de la scène, je déplace le sprite du nuage à sa première position où je vais le cloner (le clone sera créé à cette position) puis je le déplace à sa seconde position. J’ai ainsi deux éléments créés par le script d’un seul sprite. Si j’ai besoin de modifier une position de départ, je n’aurai pas à parcourir les sprites pour retrouver le bon, je n’aurai qu’à modifier le script. Si j’ai besoin de rajouter un troisième nuage, je le rajouterai au script. Ainsi, tout est groupé au même endroit.
Ceci est un exemple assez simple vous montrant ce qu’est un clone où j’utilise le parent comme un tampon. Mais si je dois animer ces nuages, je vais devoir adapter mes scripts. Mais ceci sera pour un autre billet.
Si vous avez aimé ce post, n’hésitez pas à laisser un commentaire ci-dessous ou sur la page Facebook 😉
À propos de... Darko Stankovski
iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.
Merci c’est très utile. J’ai lu qu’il y avait la possibilité de créer des clones de style Panther ou Byob.
Merci
Mais… je crois que je n’ai pas compris la question…