Comment transformer un jeu de stratégie posé sur une table en un véritable programme informatique ?

C’est le défi proposé aux élèves de terminale spécialité NSI du lycée Lamarck à Albert : programmer en Python une version numérique du jeu Quixo.

Derrière le jeu se cache surtout un véritable projet informatique : analyser, décomposer un problème, programmer, tester… et apprendre à travailler ensemble.

Quixo : simple à jouer, beaucoup moins simple à programmer !

Quixo est un jeu de stratégie dans lequel deux joueurs s’affrontent avec des croix et des ronds sur un plateau composé de 25 cubes.

L’objectif paraît simple : être le premier à aligner cinq symboles.

À chaque tour, le joueur choisit un cube autorisé situé sur le bord du plateau, lui attribue son symbole puis le réinsère en décalant toute une ligne ou toute une colonne.

Quelques règles suffisent donc pour commencer à jouer.

Mais lorsqu’il faut expliquer ces mêmes règles à un ordinateur, les choses deviennent beaucoup plus intéressantes…

Comment expliquer les règles à un ordinateur ?

Un joueur comprend naturellement ce qu’il voit sur le plateau.

Un ordinateur, lui, ne comprend rien.

Il faut tout prévoir.

Comment représenter les 25 cubes ? Comment savoir si le cube choisi peut être joué ? Comment déplacer toute une ligne ? Comment changer de joueur ? Et surtout, comment détecter qu’un joueur vient de gagner ?

C’est ici que le jeu devient un problème informatique.

Et plutôt que de chercher immédiatement à écrire des centaines de lignes de Python, les élèves commencent par… ne pas programmer.

Avant de coder, il faut réfléchir

La première étape consiste à prendre le problème dans son ensemble et à le décomposer en problèmes plus petits.

Le programme devient progressivement un assemblage de fonctions ayant chacune une responsabilité précise.

Cette organisation permet de rendre un problème qui semblait complexe beaucoup plus accessible.

Chaque élève peut alors prendre en charge une partie du projet : réfléchir à son algorithme, déterminer les informations dont sa fonction aura besoin et prévoir ce qu’elle devra retourner.

Le code vient après la réflexion.

Programmer seul… pour réussir ensemble

Chaque élève devient ainsi responsable d’une véritable brique du programme.

Mais une fonction qui fonctionne parfaitement toute seule ne suffit pas.

Elle doit pouvoir fonctionner avec celles développées par les autres membres de l’équipe.

Arrive alors une étape particulièrement importante : l’intégration.

Les élèves expliquent leur travail, assemblent leurs différentes fonctions et lancent le programme.

Et, évidemment…

tout ne fonctionne pas forcément du premier coup.

Il faut tester, comprendre les erreurs, rechercher leur origine, modifier certaines fonctions puis recommencer. Cette démarche fait partie intégrante de la méthode de projet : l’assemblage, les tests et le débogage obligent les élèves à communiquer et à comprendre les interfaces entre leurs différentes parties du programme.

Bien plus que du Python

À première vue, les élèves programment un jeu.

En réalité, ils apprennent beaucoup plus.

Ils doivent analyser, modéliser, concevoir, programmer, tester, corriger, mais aussi expliquer leurs choix et collaborer.

Cette démarche les sensibilise notamment à une idée fondamentale en informatique : un programme complexe peut être construit à partir de composants plus simples, à condition que chacun soit correctement conçu et puisse communiquer avec les autres.

C’est aussi une première approche de problématiques que l’on retrouve dans le développement logiciel : architecture du programme, répartition des tâches, définition des interfaces, intégration et tests.

Et si c’était ça, apprendre l’informatique ?

Pour un élève de seconde qui s’interroge sur la spécialité NSI, ce projet permet de découvrir une autre image de l’informatique.

La NSI, ce n’est pas simplement utiliser un ordinateur.

Et ce n’est même pas seulement apprendre Python.

C’est apprendre à partir d’un problème, imaginer une solution et réussir progressivement à la transformer en un programme qui fonctionne.

Pour les parents, le projet Quixo permet également de voir concrètement les compétences développées derrière le code : raisonnement, autonomie, rigueur, créativité et travail collectif.

C’est précisément l’une des ambitions de la spécialité NSI : passer du statut d’utilisateur du numérique à celui de créateur.

Du plateau de jeu au programme

Au début, il y avait 25 cubes posés sur une table.

À la fin, il y a un programme Python construit collectivement.

Entre les deux ?

Des idées, des algorithmes, des essais, des erreurs, quelques bugs, beaucoup de réflexion… et surtout des élèves qui découvrent qu’ils sont capables de transformer les règles d’un jeu en un véritable projet informatique.

C’est aussi cela, la spécialité NSI au lycée Lamarck.