Interaction entre lutins - (6/8) Coder un jeu sur Scratch

3 minutes pour coder - Coder un jeu sur Scratch

Chargement de la playlist en cours...

Comment créer des interactions entre les lutins ?

Pour l’instant, le but de notre jeu est d’éviter les astéroïdes qui nous tombent dessus. Mais se serait amusant de pouvoir tirer sur les astéroïdes avec notre fusée, non ? Et comme c’est notre propre jeu vidéo, tout est possible, il suffit de le coder !

Si tu as dû rater quelques épisodes de « Coder un jeu sur Scratch », tu peux les rattraper : découvrir Scratch (1/8), apprendre comment créer et déplacer des lutins dans Scratch avec « Déplacement du lutin (2/8) », « Autres mouvements du lutin (3/8) » et « Ajout d’autres lutins (4/8) » ou encore ajouter une règle et de la musique (5/8).

Créer des interactions entre les lutins

Commence par créer un nouveau lutin avec une petite boule jaune. Réduis la au besoin, comme on avait fait avec la fusée. Maintenant, je veux que "SI j’appuie sur espace ALORS" une petite boule jaune part de ma fusée et se dirige rapidement vers le haut.

Glisser dans l’espace de codage de la boule jaune le bloc "si… alors...". Puis va chercher un bloc qu’on a déjà utilisé aussi dans les "Capteurs" : "touche espace pressée". Maintenant l’ordinateur va regarder si la touche "espace" est pressée, il reste à lui dire quoi faire quand c’est le cas. On veut que la boule parte de la fusée. Le problème, c’est que la fusée bouge. Donc il faut que l’on trouve un moyen pour que la boule apparaisse là où la fusée se trouve.

On va aller chercher dans "Mouvement" un bloc bleu qui s'appelle "aller à x et y". Si on met un chiffre précis, la boule va apparaître tout le temps au même endroit et on veut qu’elle apparaisse où est la fusée. On va aller chercher dans "Capteurs" un bloc bleu clair qui s'appelle "abscisse x de boule" qu'on va glisser dans les deux trous de notre bloc de mouvement, puis les modifier pour avoir "abscisse x de Fusée" et "ordonnée y de Fusée".

Quand on lit notre code, on obtient : Si espace est appuyé le code regarde où se situe la fusée sur les lignes x et y pour faire apparaître la boule exactement au même endroit. Compris ?

Comme d'habitude, on veut que ce code soit actif quand on appuie sur le bouton du drapeau vert et qu’il se répète à chaque fois qu’on appuie sur espace. Donc tu peux ajouter les mêmes blocs que d’habitude : "le drapeau vert" et "le répéter indéfiniment".

On veut aussi que la boule se dirige vers le haut pour toucher les astéroïdes. Il faut que la boule jaune avance sur la ligne y qui va de bas en haut. Pour faire ça, tu peux ajouter un bloc bleu de "Mouvement" "ajouter 10 à y". Cette fois, le but est que ça se répète mais pas tout le temps. Une fois que la boule touche le bord de l’écran il faut qu’elle disparaisse. Il faut tout d'abord trouver le bloc jaune de "Contrôle" "répéter jusqu’à […]". Ensuite il faut que cette boucle s’arrête quand la boule touche le bord. Il faut donc trouver le bloc "Capteur" en bleu clair "Pointeur de souris touché"» et cliquer sur la petite flèche pour indiquer "Bord touché ?".

Teste ce que ça donne en appuyant sur le drapeau vert. Notre boule jaune fonctionne plutôt bien, mais elle reste en haut de l’écran. Alors je vais ajouter un bloc "Apparence" violet "cacher" à la fin de mon code. Par contre, si je lui demande de se cacher à un moment, il faut bien que je pense à lui demander d'apparaître à un autre. Alors je vais faire glisser le bloc "montrer" qui va se déclencher dès que la barre espace est pressée.

Pour résumer ce qu’il se passe dans ce code : si la touche espace est appuyée une boule jaune apparaît exactement là où est la fusée, elle se déplace vers le haut jusqu’à ce qu’elle touche le bord et disparaît.

On veut aussi que notre boule jaune puisse détruire un astéroïde en le touchant, sinon ça ne sert pas à grand-chose. Pour ça, je vais retourner dans le code de mon astéroide en cliquant dessus. Ce que l’on veut c’est que SI un astéroïde est touché par une boule jaune ALORS il disparaît. Je vais commencer par prendre mon bloc "si… alors…" et je vais glisser un bloc de "Capteurs" bleu clair "[Boule Jaune] touché ?".

Pour que l'astéroïde disparaisse, le plus simple est d’aller chercher dans "Apparence" un bloc violet "cacher".  Donc maintenant si une boule jaune touche un astéroïde, il disparaît. On veut que ça se passe tout le temps et que ça se déclenche quand on appuie sur le drapeau vert, donc il faut rajouter les blocs qui correspondent. Il ne faut pas oublier de donner l'ordre aux astéroïdes d'apparaître en rajoutant un bloc "montrer" au début du code. Une fois que c’est fait, tu peux tester ce code.

On commence à avoir un jeu vraiment intéressant mais, il reste deux choses à faire pour le rendre encore mieux : ajouter un score et un chronomètre ainsi que régler la difficulté.

Réalisateur : Valentin Levelli

Producteur : Coyote Conseil

Auteur : Arnaud Gantier et MICODE

Diffusion : 2017

Publié le - Mis à jour le 05-07-2018

Recommandations

Je t’accompagne dans
tes révisions du bac