Ce sont les éléments de base du logiciel Scratch 2 pour programmer (pour coder des scripts). Il en existe plusieurs types en fonction de leurs actions. Ils sont repérés par des couleurs. Ces blocs s'utilisent en faisant un glisser-déposer dans la fenêtre d'édition de scripts à droite puis en les imbriquant les uns dans les autres. Les formes et les encoches servent de "détrompeurs".
Il existe différents types de blocs qui dépendent de leur forme :
les instructions de forme plus ou moins rectangulaire :
les contrôles (boucles ou structures conditionnelles) :
les "écouteurs" d'événements :
les variables :
les tests :
Ces blocs sont classés en grandes fonctionnalités :
les blocs Mouvement permettent de gérer les déplacements, l'orientation ou la position des lutins sur la scène.
les blocs Apparence permettent de gérer l'apparence des lutins mais également de les faire "parler".
les blocs Sons permettent de gérer les sons et d'en faire émettre par les lutins.
les blocs Stylo permettent de gérer un stylo avec lequel le lutin peut dessiner sur l'écran en se déplaçant.
les blocs Evénements permettent de gérer les événements et les messages envoyés ou reçus par les lutins entre eux. C'est ce qui permet de gérer la programmation événementielle.
les blocs Contrôle sont les instructions pour gérer les structures conditionnelles (les tests) et les structures itératives (les boucles).
les blocs Capteurs sont les instructions pour gérer les interactions entre le slutins entre eux, avec l'environnement, mais également pour interagir avec l'utilisateur par exemple pour lui poser une question et pour gérer la webcam.
les blocs Opérateurs correspondent aux opérateurs mathématiques, aux opérateurs logiques et de comparaison.
les blocs Données permettent de créer des variables (des conteneurs de valeurs).
Ajouter blocs permet de créer soi-même des blocs par exemple pour créer des sous-programmes.
Les mouvements⚓
On va pouvoir gérer les déplacements des lutins sur la scène mais également leur orientation ou leur position.
Chaque lutin dispose de coordonnées notées x et y qui sont des variables qu'il est possible de modifier. Les coordonnées d'un lutin sont relatives au plan ci-dessous :
Elles correspondent au point "central" du lutin. Ce point peut être modifié (voir chapitre Apparence).
Les types de mouvements possible :
avancer de x pixels. Si le nombre de pixels est négatif, il va vers la gauche, s'il est positif il va vers la droite.
. Par défaut le lutin avance de 10 pixels, mais il est possible de modifier ce nombre.
tourner dans le sens horaire ou antihoraire de x degrés par rapport à lui-même.
. Par défaut le lutin tourne de 15 ° mais il est possible de modifier ce nombre.
s'orienter à x degrés : l'orientation du lutin est relative à l'axe y.
se rendre à des coordonnées données.
modifier dynamiquement les coordonnées du lutin.
gérer le contact avec le bord (pour éviter par exemple au lutin de sortir de l'écran).
Les coordonnées du lutin ainsi que la sens de la marche (direction) sont des variables que l'on peut modifier et dont on peut interroger le contenu dans des tests ou des boucles.
L'apparence⚓
Il va être possible de changer l'apparence d'un lutin (costume). Cela peut être utile par exemple pour donner l'illusion du déplacement ou pour montrer qu'il change de direction.
Nous pouvons ainsi changer dynamiquement la couleur du costume, sa taille , le faire disparaître ou apparaître, lui faire changer de plan sur la scène.
Nous trouvons également dans ces blocs des instructions pour faire "parler" ou "penser" le lutin avec un message modifiable par l'utilisateur.
L'onglet costume permet d'accéder aux différents costumes d'un lutin, d'en ajouter, de les modifier. Le costume sélectionné apparaît dans un éditeur graphique de l'image soit en mode bitmap soit vectoriel.... Des outils de dessins sont disponibles pour modifier de nombreux paramètres : couleur, ajout d'éléments, modification du dessin lui-même, taille et notamment point central du costume.
Les contrôles⚓
Ces blocs vont permettre d'utiliser des structures itératives (les boucles) pour exécuter plusieurs fois des suites d'instructions ou des structures conditionnelles (les tests) pour exécuter telle ou telle suite d'instructions en fonction d'une condition.
Ceci est détaillé dans un chapitre dédié à cela.
Les blocs capteurs⚓
Ces blocs permettent au lutin d'interagir avec son environnement : rencontre d'un autre lutin, question à l'utilisateur, emplacemetn sur la scène, réaction aux mouvements devant la caméra, test d'appui d'une touche du clavier ou de la souris.
Les interactions avec l'utilisateur⚓
Il y a plusieurs façons de faire interagir le lutin avec l'utilisateur :
on peut tout simplement lui demander d'afficher un message :
. Ces blocs se trouvent dans la famille Apparence.
il peut réagir à un événement de l'utilisateur :
. Ces blocs se trouvent dans la famille Evénements.
il peut poser une question à l'utilisateur et attendre une réponse en retour :
. La réponse tapée au clavier par l'utilisateur se trouvera alors dans la variable réponse. Ces blocs sont dans la famille Capteurs.
il peut tester l'appui sur une touche du clavier (en déterminant laquelle) ou l'appui sur la souris :
. Ces blocs sont dans la famille Capteurs.
il peut également réagir à un mouvement sur lui depuis la webcam de l'ordinateur une fois celle-ci activée :
. Ces blocs sont dans la famille Capteurs.
Les données⚓
Les données correspondent aux variables : ce sont des conteneurs de valeurs que l'on peut modifier au cours de l'exécution du programme, contrairement aux constantes. Les variables sont définies par l'utilisateur : .
Cette section permet de créer soit des variables simples soit des listes (tableaux de données).
On propose de lier ces données soit uniquement à un lutin : on dit alors que les données sont locales à ce lutin qui sera le seul à les "voir". Ou bien de les rendre accessibles à tous les lutins.
En créant une variable, on fait apparaître des instructions supplémentaires pour pouvoir travailler sur cette variable (et les autres) : en particulier pour en changer le contenu ou lui ajouter une valeur donnée.
Ainsi on a l'instruction d'affectation qui permet de changer le contenu d'une variable en mettant à sa place une nouvelle valeur ou le contenu d'une autre variable : .
On peut ajouter au contenu d'une variable une valeur donnée ou le contenu d'une autre variable : .
Dans ces deux cas, le contenu de la variable indiquée est modifié.
Les opérateurs⚓
Ces blocs vont permettre entre autres de faire des calculs, de comparer, de faire des tests logiques ou de travailler avec des chaînes de caractères.
On trouve dans cette section les blocs qui permettent d'effectuer les opérations arithmétiques sur des nombres :
Ils s'utilisent avec des variables et des constantes :
Ces opérateurs renvoient le résultat de l'opération arithmétique désigné. Si on utilise des variables, le contenu de celles-ci n'est pas affecté.
Les blocs d'opérateurs logiques permettent de travailler sur des données booléennes. A savoir qui ont pour valeur VRAI ou FAUX :
On les utilisent en particulier dans les structures conditionnelles (voir ce chapitre).
Ces opérateurs renvoient les valeurs true (VRAI) ou false (FAUX), valeurs qui peut ensuite être stockée dans une variable.
On peut travailler sur des caractères ou des chaînes de caractères grâce aux opérateurs suivants : .
L'opérateur concaténation permet de regrouper deux chaînes de caractères pour en faire une troisième. EX : renvoie la chaîne "Bonjour les amis !".
L'opérateur longueur renvoie la longueur de la chaîne placée en argument. Ex : renvoie 25.
L'opérateur lettre renvoie le caractère placé à la position indiquée dans la chaîne placée en argument. Ex : renvoie "C".
Les arguments peuvent être des constantes ou des variables. Dans ce cas-ci, leur contenu n'est pas affecté par les opérateurs.
Les opérateurs de comparaison permettent d'effectuer des comparaisons : . Ils peuvent être combinés avec les opérateurs logiques :
.
Pour tester la différence, on doit combiner l'opérateur avec l'opérateur
pour créer un nouvel opérateur ainsi :
.
Ces opérations renvoient les valeurs true (VRAI) ou false (FAUX).
Ces opérateurs permettent de tester aussi bien des nombres que des chaînes de caractères contenus ou non dans des variables. Dans le cas des chaînes de caractères, on teste l'ordre alphabétique. Ex : renvoie false.