Aller au contenu principal
sports_esports Lab Canvas 2D Logique sur grille IA flood-fill Zéro dépendance

Tron / motos — une IA défensive par flood-fill en Canvas 2D

Le duel de motos culte, réimplémenté from scratch en Canvas 2D : deux traînées qui remplissent une arène en grille, collision en simple lecture de grille, et une IA défensive qui évalue chaque virage par la quantité d'espace libre atteignable (flood-fill) pour ne jamais s'enfermer. Zéro dépendance.

Flèches ← ↑ → ↓ ou W A S D : tourner à angle droit Balayage du doigt sur mobile Espace : démarrer et mettre en pause

Deux motos, une grille, et une seule règle

Le principe de Tron tient en une phrase : deux motos avancent sans jamais s'arrêter et laissent derrière elles une traînée solide. On ne peut que tourner à angle droit. Percuter un mur, sa propre traînée ou celle de l'adversaire est fatal ; le dernier en piste gagne. J'en fais un banc d'essai pour montrer qu'une IA d'apparence maligne peut reposer sur une idée simple et parfaitement lisible.

La collision : une simple lecture de grille

Tout le plateau est un tableau d'entiers, une case par cellule : vide, occupée par le joueur, ou occupée par l'IA. À chaque pas, tester une collision revient à lire une seule case — la destination est-elle hors du terrain, ou déjà marquée ? Pas de géométrie, pas de détection de contour, aucune boucle sur les traînées. Poser une traînée, c'est écrire dans une case ; vérifier un choc, c'est en lire une. Cette représentation unique rend le jeu à la fois trivial à raisonner et très bon marché à exécuter.

Une IA défensive, pas devineresse

L'adversaire indigo ne cherche pas à me piéger : il cherche à ne pas s'enfermer. À chaque intersection, il n'a que trois choix — continuer tout droit, tourner à gauche, tourner à droite — puisque le demi-tour est un suicide. Il élimine d'abord les directions immédiatement mortelles, puis départage les survivantes sur un seul critère : combien d'espace libre reste-t-il derrière chacune ?

Le flood-fill, ou compter sa respiration

Pour chaque direction envisageable, l'IA lance un flood-fill — un parcours en largeur depuis la case visée qui compte toutes les cellules libres encore atteignables. Ce nombre mesure la « respiration » que le virage lui laisse. Elle choisit la direction au plus grand espace et, à égalité, garde sa trajectoire pour éviter de zigzaguer inutilement. Résultat : une moto qui longe les bords, referme proprement les grands espaces et évite de se murer dans un couloir sans issue — le tout sans anticiper mes coups, juste en refusant les culs-de-sac.

Le bon algorithme au bon endroit

Il n'y a ni réseau de neurones ni arbre de recherche ici, et c'est le propos : un comportement crédible sort d'une heuristique de quelques lignes, adossée à une structure de données bien choisie. C'est exactement la démarche que j'applique à vos projets — préférer la solution la plus simple qui tient réellement la charge, plutôt que la plus impressionnante sur le papier. Un code que l'on relit sans peine, que l'on teste sans détour et que votre équipe peut faire évoluer en toute autonomie.

Photo d'Emmanuel BALLERY, fondateur de x10

À propos de l'auteur

Emmanuel BALLERY est le fondateur de x10 solutions. Ces petits jeux sont surtout un plaisir de développeur, codés le week-end — pas une vitrine de mes missions, qui sont bien plus exigeantes. J'y soigne quand même la performance et la lisibilité, par habitude.

Voir plus arrow_forward
rocket_launch

Un vrai projet en tête ?

Ce petit jeu m'amuse, mais il ne dit pas grand-chose de mon métier : mes missions sont bien plus complexes. Si vous avez une application à concevoir ou à fiabiliser, c'est là que je suis vraiment utile.

Discuter de mon projet arrow_forward