Le jeu de la galaxie

mercredi 30 décembre 2009
par  Alain BUSSER

Des remarques sur ce jeu, à l’usage exclusif des professeurs de mathématiques, figurent en bas de page. Si on n’est pas professeur de mathématiques, on peut se contenter d’y jouer...

Une fusée est chargée d’effectuer une importante livraison au centre de la nébuleuse d’Eden, située en bas à gauche dans le jeu ci-dessous (origine du repère). Sitôt que le vaisseau est entré dans la nébuleuse verte, une armada vient le prendre en charge et la partie est gagnée. Mais la fusée doit à tout prix éviter les trous noirs qui parsèment le plateau de jeu (en rouge) sinon la fusée, et la partie, sont perdus...

Le mode de déplacement de la fusée est assez étrange dans cette partie de l’univers (dont l’unité de mesure a été choisie de telle manière que les coordonnées x et y de la fusée sont comprises entre 0 et 1) : À chaque poussée du moteur, chacune des coordonnées peut être invariante, ou élevée au carré, ou élevée au cube, ou remplacée par sa racine carrée.

Ci-dessous, la position actuelle de la fusée est le point F, en cyan. La position qu’elle va occuper est représentée par une croix marron. On peut donc estimer l’effet qu’aura le réglage du moteur, lequel se fait par les deux menus déroulants à gauche. Pour effectuer le déplacement, on doit cliquer deux fois sur la case "jouer" (une fois pour la décocher, une deuxième fois pour la cocher à nouveau). Enfin la case en bas à gauche permet, au deuxième clic, de recommencer la partie si on le souhaite.

le jeu au format CaRMetal

On constate que le jeu est perfectible : Une fois qu’on est tombé dans un trou noir et qu’on a donc perdu la partie, on peut quand même en ressortir et gagner la partie quand même. Cela s’appelle tricher... Cette faiblesse de l’implémentation est due à ce que le fonctionnement séquentiel du jeu est simulé par des booléens de CaRMetal : Il n’y a pas de langage de programmation ici ! Réaliser une implémentation

  • qui empêche le perdant de continuer le partie (système anti-triche)
  • qui empêche aussi de traverser un trou noir (dans le cas actuel, seules les positions de départ et d’arrivée doivent être extérieures au trou noir et pas par exemple leur milieu)

est laissé comme exercice au lecteur. C’est d’ailleurs parfaitement faisable avec CaRMetal qui gère plutôt bien les intersections entre segments et disques...


Des remarques pour les profs

En entrant en Seconde, beaucoup d’élèves font le raisonnement, erroné, suivant :

  • Chaque fois que j’élève au carré un nombre pris au hasard, comme 2, 5 ou 10, le résultat est supérieur au nombre de départ ;
  • Donc le carré d’un nombre est toujours supérieur à ce nombre ;
  • De même la racine d’un nombre est inférieure à celui-ci.

D’où le célèbre théorème de situation :

Pour tout $x$ réel, $x^2$ est supérieur ou égal à $x$ (l’égalité ayant lieu pour 0 et 1)

Et après la Seconde, les erreurs sont plus subtiles : Ayant défini l’indépendance de deux évènements $A$ et $B$, la probabilité de $A \cap B$ est plus petite que celle de $A$ et que celle de $B$ (c’est plus difficile d’avoir deux choses en même temps, que d’avoir une seule des deux) mais souvent vécue, même en BTS, comme nécessairement plus grande "parce la multiplication ça agrandit les nombres".

Dans l’ancien programme de Seconde, un item était explicitement consacré à la comparaison entre un réel positif, son carré et son cube. Il a disparu. Et ce jeu permet de montrer que le carré d’un réel positif n’est pas forcément supérieur à celui-ci, en effet il ne faut pas confondre réel et entier...

En Première, ce jeu peut servir d’introduction à la notion de suite récurrente. En effet en y jouant, on constate que la suite des itérées de $x \mapsto x^2$ tend vers 0.

Et en algorithmique, ce jeu illustre l’affectation successive de variables (ici les coordonnées de la fusée) et les tests. Et pour un élève ou groupe d’élèves chargé d’implémenter ce jeu (par exemple en Scratch) la formule donnant la distance entre deux points dans un repère orthonormé peut être mise à profit (ici elle n’a pas été nécessaire puisque CaRMetal possède une fonction inside qui fait l’affaire).


Commentaires