Robosomes

samedi 23 octobre 2021
par  Alain BUSSER , Sébastien HOARAU

Le jeu robosomes se joue à un seul joueur sur une grille rectangulaire. Chaque case peut être

  • soit vide
  • soit couverte par un obstacle fixe (en noir comme aux mots croisés)
  • soit couverte d’un pion pouvant bouger, appelé robot

Chaque robot peut être tourné dans l’une des quatre directions cardinales ◀▲▶▼. Les robots peuvent bouger tous en même temps de l’une des façons suivantes :

  • G : tous les robots tournent vers leur gauche (de 90°) en même temps
  • D : tous les robots tournent vers leur droite (de 90°) en même temps
  • A : les robots qui peuvent avancer d’une case, le font. Un robot peut avancer d’une case s’il n’y a pas d’obstacle sur cette case et si aucun robot ne s’apprête à aller sur cette case.

Les cases du bord de la grille sont toutes couvertes d’obstacles fixes, à l’exception de l’une d’entre elles appelée « sortie ». Lorsqu’un robot est sur la case de sortie, tourné vers l’extérieur de la grille, il quitte le jeu et n’est plus soumis aux ordres donnés. Le but du jeu est de faire sortir tous les robots de la grille, en écrivant un mot dans l’alphabet A,G,D, appelé programme et que les robots interprèteront comme décrit ci-dessus.

Licence Creative Commons
Ce jeu est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.

Exemple

Le jeu ci-dessus ne permet qu’à un deux robots d’avancer :

avant après A

En effet les autres robots ont devant eux un obstacle qui est soit un mur, soit un autre robot.

Alors que G produit l’effet

avant après G

et D produit l’effet

avant après D

En cliquant sur l’image ci-dessous, on peut jouer en ligne sur cet exemple (il suffit d’écrire un mot dans le cadre noir, à l’aide des lettres A, D et G) :

labyrinthes

En fait robosomes est une généralisation des jeux de labyrinthe, comme on le voit sur cet exemple :

Interblocage

Ce jeu n’a pas de solution :

En effet dès qu’on réussit à faire approcher un des robots de la sortie, l’autre robot arrive en même temps et crée un embouteillage qui bloque la sortie.

Le premier des jeux présentés ci-dessous n’a pas non plus de solution, ici l’embouteillage est provoqué par deux robots arrivant sur la même case mais de deux côtés différents :

Mais le second jeu (dessiné ci-dessus) possède une solution. Essayez (en ligne en cliquant sur l’image ci-dessus) !

Une situation d’interblocage est connue, c’est celle où chaque robot est bloqué par un robot devant lui, comme ici :

Ce jeu possède pourtant une solution.

L’intérêt du jeu robosomes vient surtout du fait qu’il y a plusieurs robots qui peuvent se gêner les uns les autres, mais le blocage partiel de certains robots permet parfois de libérer le passage à d’autres robots [1]. En voici un exemple :

En jouant à ce jeu, on voit comment une file de robots avance : au début seul le premier bouge parce qu’il est le seul à ne pas avoir d’obstacle devant lui, mais ce faisant il libère la place devant le second qui bouge à son tour et ainsi de suite, la file s’allonge (jusqu’à presque doubler de longueur) en même temps qu’elle progresse :

Voici deux exemples où la grille est très encombrée mais où on peut faire sortir beaucoup de robots :

que des robots une colonne centrale

Réussirez-vous à les faire sortir tous ?

Voici un robosomes inspiré par un jeu qu’Édouard Lucas décrivait sous le nom de prise de la Bastille :

Mise en œuvre

On peut dessiner une grille de robosomes à la craie, par terre, et placer sur les cases présentant des obstacles fixes, des chaises (qui ne bougeront pas au cours du jeu). La sortie [2] est signalée par un coloriage particulier ou un objet placé dessus (un mouchoir par exemple). Les robots sont interprétés par des élèves, que l’on place initialement selon le plan du jeu. Les robots ne doivent pas bouger sans qu’on le leur demande.

Un seul élève (ou une équipe peu nombreuse) donne les ordres à voix haute. Les robots exécutent les ordres simultanément :

  • Si l’ordre est d’essayer d’avancer, les robots qui voient un obstacle (chaise ou autre robot) sur la case disposée devant eux, ne bougent pas. Les autres avancent d’une case.
  • Si l’ordre est de tourner vers la gauche, les robots effectuent tous un quart de tour vers leur gauche. Ensuite on ajuste leur position au cas où certains d’entre eux auraient tourné d’un autre angle ou seraient sortis de leur case en tournant. Les élèves non latéralisés peuvent être munis de brassards de deux couleurs différentes avec charge de tourner vers leur brassard bleu (si c’est celui de gauche) .
  • Si l’ordre est de tourner vers la droite, les robots doivent tous effectuer un quart de tour vers leur droite.

Si un robot arrive sur la case de sortie, il doit quitter le plateau. Comme pour les erreurs de rotation ou les conflits non résolus, il peut être nécessaire que l’enseignant.e joue le rôle d’arbitre.

Si un robot n’a pas respecté les règles du jeu, il est difficile de revenir en arrière (les autres robots ne se souvenant pas forcément de leur ancienne position, et il y aurait également risque d’erreur lors du retour en arrière). Dans ce cas il vaut mieux recommencer tout le jeu depuis la position initiale. Il en est de même si le programmeur a manifestement emprunté une voie sans issue.

Compétences travaillées

L’élève programmeur travaille la vision (dans l’espace) et la planification.

Les élèves robots travaillent le repérage dans l’espace, l’orientation (latéralisation) et la socialisation.

Théorie

En fait, chaque configuration du plateau peut être décrite par une matrice (dont chaque cellule porte un nombre décrivant si il y a un mur, une sortie ou un robot et dans ce cas, comment il est tourné) appelée état, et les états (de ce qui n’est jamais qu’un automate) sont divisés en trois catégories :

  • l’état initial
  • les états finaux (ceux où aucun robot ne subsiste sur le plateau)
  • les états accessibles à partir de l’état initial.

Il en résulte que (en théorie) il est possible de trouver une solution à un robosomes [3] :

Éditeur

Le fichier suivant permet de fabriquer une matrice qu’il suffit de mettre dans l’un des jeux précédents pour créer son propre jeu de robosomes :

Autres contributions

L’autre version de robosomes (où les robots peuvent se croiser ou avancer tous en même temps) a inspiré du monde :

  • Éric Buonocore, professeur de NSI au lycée Molière, propose ce simulateur du jeu basé sur Qt :
  • Romain Janvier, professeur de NSI au lycée les trois sources, propose ce solveur :
  • Sébastien Hoarau propose
    • ce fichier Python basé sur la POO :
    • cette version jupyter :

[1robosomes est en ce sens un peu l’inverse de Rush hour puisque ce n’est pas en libérant la place qu’on fait progresser le jeu, mais en la bloquant.

[2ou les sorties, il peut éventuellement en avoir plusieurs

[3et accessoirement de dire s’il existe une solution !


Commentaires