SE CONNECTER
1,2,3... codez ! | Le site de la Fondation La main à la pâte
Module 123 Codez | Programmer | Informatics and Digital Creation

Projet « Jeu d’arcade » – Séance 6 Programmer la chute des récompenses


1, 2, 3, codez ! - Activités cycle 4 - Projet « Jeu d’arcade » - Séance 6 : Programmer la chute des récompenses

Discipline dominante

Mathématiques

Résumé

Programmer la chute des récompenses permet aux élèves de revenir sur les variables, les clones, les boucles, les tests et les nombres aléatoires. Les élèves découvrent également la possibilité de commenter leur programme pour en faciliter la lecture.

Notions

« Bonnes habitudes de programmation » :

  •  Placer des commentaires dans un programme en facilite la lecture et le partage avec autrui.
  •  Un programme bien écrit, avec des variables et des fonctions bien nommées, ne nécessite pas beaucoup de commentaires.

Matériel

Identique à la séance précédente.

La classe reprend la carte mentale élaborée lors de la Séance 2 et s’intéresse à un autre mécanisme essentiel du jeu : la chute des pièces (ou autres types de récompenses selon le thème choisi). Les élèves remarquent que les récompenses se comportent à peu près comme les pièges, et peuvent donc facilement proposer un découpage en tâches « simples » pour cette fonctionnalité du jeu (puisqu’il s’agit d’un réinvestissement de notions connues, le problème peut être découpé moins finement que précédemment).
Voici par exemple un découpage en 4 étapes :

Difficulté

Nom de la tâche

Travail à effectuer

Tâche 1 : faire chuter un nombre aléatoire de récompenses

  • Créer le lutin
  • Attendre une durée aléatoire avant de le cloner
  • Pour chaque clone : le faire chuter vers le bas de l’écran (à la même vitesse que les astéroïdes)

Tâche 2 : augmenter le score chaque fois que l’avatar touche une récompense

  • Créer une variable indiquant le score
  • Lui donner une valeur initiale
  • L’augmenter de 1 lorsque l’avatar touche une récompense

Tâche 3 : augmenter la vitesse de chute  à chaque fois que le score augmente

  • Créer une variable « vitesse_chute »
  • L’initialiser
  • Remplacer la valeur numérique de la vitesse des astéroïdes et des récompenses par cette variable
  • Augmenter la valeur de la vitesse à chaque fois que le score augmente

Tâche 4 : commenter son programme

  • Insérer des commentaires facilitant la lecture du programme

Tâche 1 : faire chuter un nombre aléatoire de récompenses (20 minutes)

Les élèves reproduisent en autonomie les différentes étapes des deux séances précédentes, appliquées cette-fois au nouveau lutin « récompense », en commençant par la création du lutin, jusqu’à la programmation de la chute de ses clones.
Le programme ressemble à :

L’enseignant organise une mise en commun afin de s’assurer que ces différentes notions (boucles, tests, clones, nombres aléatoires…) soient bien acquises par tout le monde.

Note scientifique :

  •  Ici, on a fait le choix d’utiliser la même vitesse pour les astéroïdes et les récompenses.
  •  De même, on a fait un autre choix : faire apparaître les récompenses moins souvent que les pièges : cela n’a rien d’obligatoire !
  •  On utilise les commandes « cacher » et « montrer » pour corriger un dysfonctionnement : lorsqu’on supprime un clone, cela marche pour tous les clones, mais pas pour le lutin d’origine, qui reste à l’écran. Ici, on décide de cacher ce lutin, et de ne montrer que ses clones.

Programme de la récompense (pièce)

Tâche 2 : augmenter le score chaque fois que l’avatar touche une récompense (10 minutes)

Cette tâche reprend également des notions déjà vues auparavant, puisqu’il s’agit de créer, initialiser et utiliser une nouvelle variable : le score. La création et l’initialisation peuvent se faire dans le lutin de l’avatar (le vaisseau), tandis que la modification de cette variable peut se faire dans le lutin [d6][d7]« récompense », en particulier dans le sous-programme qui gère chacun des clones. Il suffit d’ajouter un test « SI le vaisseau est touché, ALORS supprimer le clone et augmenter le score ».


Sous-programme concernant la récompense

Tâche 3 : augmenter la vitesse de chute  à chaque fois que le score augmente (15 minutes)

La difficulté du jeu va augmenter au fur et à mesure que le score progresse, ce qui se traduira par le fait que les astéroïdes (et les pièces) tombent de plus en plus vite. Pour modifier la vitesse de chute, il faut que celle-ci soit gérée par une « variable ». Une fois la variable créée, il ne faut pas oublier de lui donner une valeur (sinon, elle prend la valeur 0 par défaut).

Les élèves procèdent comme pour le score et le nombre de vies pour créer leur variable « vitesse_chute ». Ils initialisent sa valeur (par exemple à « -10 »), par exemple dans le programme du vaisseau (où les autres variables ont été initialisées).
Il faut ensuite modifier le programme de l’astéroïde et celui de la récompense pour remplacer « ajouter -10 à y » par « ajouter vitesse_chute à y ».


Modification du programme des récompenses en introduisant la variable vitesse_chute. Note : une modification similaire est nécessaire pour le programme de l’astéroïde.

Il faut désormais modifier la vitesse de chute lorsque le score augmente, de façon à corser la difficulté du jeu. Cette dernière tâche ne présente aucune difficulté d’un point de vue de la programmation. La seule difficulté est d’ordre conceptuel : par convention, nous avons défini une vitesse négative (car aller vers le bas signifie faire décroître l’ordonnée), donc « augmenter la vitesse » signifie ici « augmenter en valeur absolue » (on va en réalité diminuer sa valeur).
Il suffit d’ajouter l’instruction suivante juste en dessous l’augmentation du score, dans le programme de la récompense :

Tâche 4 : commenter son programme (10 minutes)

L’enseignant fait remarquer à la classe combien il peut être difficile pour une personne de lire le programme réalisé par une autre ou, pour une même personne, de comprendre son propre programme si l’on y a pas touché depuis longtemps.
Il explique que tous les langages de programmation (Scratch inclus) permettent d’ajouter des commentaires (ce sont des indications écrites en français – ou en anglais – qui ne sont pas interprétées par la machine et qui s’adressent aux lecteurs humains).
Pour créer un commentaire, il suffit de cliquer avec le bouton droit sur une instruction dans le programme. Il est inutile de tout commenter : il faut aller à l’essentiel !


Exemple de commentaire dans le programme de l’astéroïde

Les élèves passent quelques minutes à commenter leur programme.

Conclusion

Les bonnes habitudes de programmation évoquées lors de cette séance sont recopiées dans le cahier de projet :

  •  Placer des commentaires dans un programme en facilite la lecture et le partage avec autrui.
  •  Un programme bien écrit, avec des variables et des fonctions bien nommées, ne nécessite pas beaucoup de commentaires.