Source: Scratch Wiki en français
En dehors des variables, les blocs personnalisés sont le principal type d'abstraction utilisé dans la programmation procédurale ; elles permettent aux Scratchers d'écrire des scripts sans connaître ou réfléchir aux détails de ce que fait chaque script. Une même pile de blocs peut ainsi servir plusieurs fois dans différents contextes, avec des paramètres permettant d'adapter les blocs à la situation.
Utilisation courante
Ces blocs sont utiles dans plusieurs cas :
- Éviter de devoir utiliser plusieurs fois les mêmes blocs, dans différents scripts d'un même sprite.
- Éviter de devoir utiliser plusieurs fois les mêmes blocs avec des valeurs différentes.
- Séparer son code pour mieux s'y retrouver, chaque bloc a alors une fonction bien spécifique.
- Passer outre la vitesse d'exécution des scripts de Scratch (30 FPS) et exécuter les actions contenues dans la définition du bloc aussi vite que leur complexité le permet, grâce à l'option "exécuter sans rafraîchissement d'écran".
Les options
Lorsque vous cliquez sur "Créer un bloc", l'outil de création de bloc permet à celui-ci d'avoir des entrées de données et plein d'autres choses : en cliquant sur "Options", vous avez accès à tous ces suppléments, dans l'ordre :
Entrée nombre ou texte
"Ajouter une entrée nombre" permet d'ajouter une entrée ne pouvant contenir que des nombres, du texte ou une variable : variable (ma variable)::custom // avec une variable
, nombre [123]::custom // avec un nombre
ou nombre [texte]::custom // avec du texte
Entrée booléenne
"Ajouter une entrée booléenne" permet d'ancrer dans les blocs des blocs comme celui-ci : booléen <[] = []> ou <> ::custom//avec un opérateur et sans opérateur
Ajouter une étiquette
Et enfin, "Ajouter une étiquette" permet tout simplement d'écrire sur le bloc du texte entre les différentes entrées :
chanter (10) fois la chanson de [la macaréna] si <((nombre1)+(3))>(5)> ::custom // ici "fois la chanson de", "si"
Exemples
mettre l'effet [fantôme v] à (100) répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin attendre jusqu'à ce que <touche (espace v) pressée?> répéter (10) fois ajouter (10) à l'effet [fantôme v] fin costume suivant répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin attendre jusqu'à ce que <touche (espace v) pressée?> répéter (10) fois ajouter (10) à l'effet [fantôme v] fin costume suivant répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin attendre jusqu'à ce que <touche (espace v) pressée?> répéter (10) fois ajouter (10) à l'effet [fantôme v] fin costume suivant répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin
peut devenir
mettre l'effet [fantôme v] à (100) répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin répéter (3) fois attendre jusqu'à ce que <touche (espace v) pressée?> transition fin définir transition répéter (10) fois ajouter (10) à l'effet [fantôme v] fin costume suivant répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin
et peut même prendre des paramètres
mettre l'effet [fantôme v] à (100) répéter (10) fois ajouter (-10) à l'effet [fantôme v] fin répéter (3) fois attendre jusqu'à ce que <touche (espace v) pressée?> transition [fantôme] en (10) fois avec (100) fin définir transition (nom transition) en (durée) fois avec (effet max) répéter (durée) fois ajouter ((effet max) / (durée)) à l'effet (nom transition) fin costume suivant répéter (durée) fois ajouter ((0) - ((effet max) / (durée))) à l'effet (nom transition) fin