Dev web

Snake dans la barre d'adresse : le jeu qui tourne dans une URL

Un Snake complet qui s'affiche dans la barre d'adresse grâce aux caractères braille. Télécharge le fichier, joue, et comprends comment ça marche.

GratuitDébutant4 min de lecture

Fiche récap

Outil
snake-barre-adresse.html
Coût
Gratuit
Niveau
Débutant
Système
Windows · macOS · Linux
Il te faut
  • Un ordinateur avec un clavier
  • Firefox ou Chrome (pas Safari)

Jouer en 3 étapes

  1. Lance le jeu. Clique sur « Jouer maintenant ». Ou télécharge le fichier et ouvre-le dans Firefox ou Chrome (pas Safari).
  2. Démarre la partie. Clique dans la page ou appuie sur espace.
  3. Regarde la barre d’adresse, pas la page. Flèches haut/bas pour changer de ligne. Gauche/droite pour faire demi-tour : la queue devient la tête. Les bords gauche et droit sont des murs.

Comment ça marche

Un caractère braille = 8 points

Un caractère braille, c’est une grille de 2 colonnes × 4 lignes, soit 8 points. Il en existe 256, un pour chaque combinaison de points allumés et éteints.

0x010x080x020x100x040x200x400x808points256caractères

20 caractères = un écran

20 caractères côte à côte = un écran de 40 × 4 points. La ligne du bas est toujours allumée : c’est le sol. Et ça évite que Chrome affiche des caractères vides sous forme de code.

20 caractères = 40 × 4 pointsligne du bas = le sol

L’adresse change 6 fois par seconde

Environ 6 fois par seconde, le code réécrit la fin de l’adresse avec history.replaceState. La page ne se recharge pas, et l’historique ne se remplit pas.

…snake.html#≈ 6 fois par seconde : history.replaceState()✓ pas de rechargement · ✓ historique vide

Le score dans l’onglet

Le score s’affiche aussi dans le titre de l’onglet (document.title).

🐍 Score : 3document.title = `🐍 Score : ${score}`

Le code clé

Pas besoin de tout lire. Trois extraits suffisent pour comprendre.

1. Chaque point = un bit

Le tableau BIT dit quel bit correspond à quel point. Une ligne du tableau = une ligne de points, deux colonnes par ligne.

// Chaque point d'un caractère braille correspond à un bit : BIT[ligne][colonne]
const BIT = [
  [0x01, 0x08], // ligne 1 : gauche, droite
  [0x02, 0x10], // ligne 2
  [0x04, 0x20], // ligne 3
  [0x40, 0x80], // ligne 4 (le sol)
];

2. Du serpent aux caractères braille

draw() part de 20 caractères vides, allume les points du sol, du serpent et de la pomme, puis transforme chaque case en caractère. Le premier caractère braille est 0x2800 (aucun point) : il suffit d’y ajouter les bits allumés.

function draw() {
  const cells = new Array(COLS).fill(0); // 20 cases, tous les points éteints
  // x >> 1 : quelle case (2 points par case) ; x & 1 : colonne de gauche ou de droite
  const light = (x, y) => (cells[x >> 1] |= BIT[y][x & 1]);
  for (let x = 0; x < W; x++) light(x, H - 1); // le sol, toujours allumé
  for (const p of snake) light(p.x, p.y);
  light(food.x, food.y);
  // 0x2800 = braille vide, + les bits allumés = le bon caractère
  return cells.map((bits) => String.fromCharCode(0x2800 + bits)).join('');
}

3. Écrire dans la barre d’adresse

Une seule ligne. replaceState remplace l’adresse actuelle au lieu d’en ajouter une nouvelle : pas de rechargement, et ton bouton « retour » reste propre.

// Réécrit la fin de l'adresse : pas de rechargement, pas de nouvelle entrée d'historique
history.replaceState(null, '', '#' + screen);

Pourquoi ça ne marche pas partout

  • Safari limite les changements d’adresse trop rapides, donc le jeu bloque.
  • Dans un aperçu de fichier (mail, appli, messagerie), il n’y a pas de barre d’adresse. Il faut l’ouvrir dans un vrai navigateur.

Publié le

Sources et liens officiels

Guides & ressources

Testé sur ma machine

Des guides pas à pas et des sélections de sites pour progresser en dev, IA, data ou cyber. Gratuit, sans inscription.

La newsletter du lundi

L’actu tech en 5 minutes

Chaque lundi, les sujets IA, tech et dev de la semaine expliqués simplement, plus mes nouveaux guides. Zéro spam.

En vidéo

Un outil par vidéo

Chaque semaine, un outil, une astuce ou une ressource, avec le guide à récupérer en commentaire.

L’actu tech en 5 minutes, chaque lundi

Les sujets IA, tech et dev de la semaine expliqués simplement, plus mes nouveaux guides. Gratuit, désinscription en un clic.