🧱 Le projet de Maxance

Un jeu en 2D qui commence par courir, sauter et esquiver des obstacles… et qui va grandir, étape par étape, jusqu'à un monde de blocs façon Minecraft. Ici, on ne se contente pas de jouer : on regarde comment ça marche à l'intérieur.

👥 L'équipe : qui fait quoi

Comme dans un vrai studio de jeux vidéo, chacun a son rôle. Le code, c'est Claude. Les idées et les décisions, c'est Maxance.

🎬 Maxance · directeur du jeu

  • a les idées et décide de ce que fait le jeu ;
  • écrit chaque demande avec la fiche (voir plus bas) ;
  • teste avec les rayons X et vérifie les critères de réussite ;
  • valide ou refuse : « c'est bon » ou « ce n'est pas ce que j'ai demandé » ;
  • note dans le journal ce qu'il a appris.

🤖 Claude · développeur

  • écrit tout le code ;
  • pose des questions si la demande n'est pas assez précise ;
  • explique ce qu'il a fait et pourquoi, avec des mots simples ;
  • ajoute de quoi voir le fonctionnement interne (rayons X, journal, base de données) ;
  • met à jour ce carnet à chaque étape.

🧭 Cyril · producteur

  • aide Maxance à rendre sa demande claire et précise ;
  • transmet la demande à Claude ;
  • garde le rythme des séances ;
  • relit l'explication avec Maxance et pose des questions.

🔁 Comment se passe une étape

Jouer et relireMaxance joue à la version actuelle et relit ce qu'il a appris. 10 min
Écrire la demandeAvec la fiche : quoi, comment, en combien de temps, critères. 15 min
Claude codeCyril donne la demande à Claude, qui code et explique. 10 à 30 min
Tester sous le capotRayons X, pause, ralenti, journal : est-ce que chaque critère est rempli ? 15 min
Valider et noterValidé ? On l'écrit dans le journal. Sinon, on corrige la demande. 5 min

Rythme conseillé : une étape = 1 à 2 séances d'environ 45 minutes. Pas besoin d'aller vite : le but est de comprendre et de s'amuser.

✍️ Passer commande à Claude

Un développeur fait exactement ce qu'on lui demande. Si la demande est floue, le résultat sera au hasard. Savoir écrire une bonne demande, c'est le vrai super-pouvoir d'un directeur de jeu.

❌ Demande floue

« Ajoute des ennemis. »

Combien ? Où ? Ils bougent comment ? Qu'est-ce qui se passe si on les touche ? Claude devra tout deviner.

✅ Demande précise

« Ajoute un oiseau qui vole de droite à gauche à hauteur de tête (y = 360), à la même vitesse que les obstacles. Il apparaît à partir du score 10, environ une fois sur quatre à la place d'une caisse. Si on le touche, c'est perdu. Pour l'éviter, il faut ne pas sauter. Je saurai que c'est réussi si, avec les rayons X, je vois sa zone de collision passer au-dessus de ma tête quand je reste au sol. »

📋 La fiche de demande

Remplis la fiche, puis clique sur Préparer le message : le texte à envoyer à Claude apparaît, prêt à copier. La fiche est sauvegardée dans ce navigateur.

🏃 Étape 1 : courir, sauter, esquiver ✅ livrée

Le point de départ du projet : un héros qui court à gauche et à droite, qui saute, et des obstacles en blocs à esquiver.

📋 La demande de Maxance

Reconstituée à partir de ce qu'il a raconté. Le fichier complet est dans demandes/01-courir-sauter-esquiver.md.

Quoi : un jeu en 2D où je me déplace de gauche à droite et où je saute pour esquiver des obstacles.

Comment : si je touche un obstacle, j'ai perdu. Chaque obstacle esquivé = 1 point. Mon record est gardé.

Pour comprendre : comment le jeu est organisé, comment il réagit quand j'appuie sur une touche, et à quoi sert une base de données.

✅ Ce que tu peux vérifier

  • ← → (ou Q D) déplacent le héros, sans sortir de l'écran.
  • Espace / ↑ / Z : saut d'environ 4 blocs, en moins d'une seconde.
  • Garder la touche = saut haut ; appui court = petit saut.
  • Les obstacles accélèrent avec le temps ; tours et murets arrivent aux scores 4 et 8.
  • Le record survit quand on ferme la page.
  • Touche X : les rayons X montrent tout ce qui est invisible.

🏗️ L'architecture : comment le jeu est organisé

Un jeu, ce n'est pas un seul gros fichier : c'est une équipe de petits morceaux de code, chacun avec un seul travail. Ils sont rangés en 4 familles (4 dossiers) :

❤️ La boucle de jeu · main.js 120 mises à jour et 60 images par seconde ⌨️ Clavier tes doigts 🎮 Entrées moteur/entrees.js 🌍 Le monde · logique/monde.js 🧍 Joueur joueur.js 🧱 Obstacles obstacles.js + score, vitesse, phase, temps… = la mémoire vive du jeu 🎨 Rendu affichage/rendu.js 🖥️ Écran 🍎 Physique moteur/physique.js 🎛️ Réglages config.js · lus par tous 📻 Événements (la radio) moteur/evenements.js 🔧 Sous le capot journal, état en direct 💾 Sauvegarde donnees/sauvegarde.js 🗄️ Base de données localStorage du navigateur intentions lit lois de la nature annonce écoute écrit
moteur/ : les outils génériques (réutilisables dans n'importe quel jeu) logique/ : les règles de CE jeu donnees/ : ce qu'on garde pour toujours affichage/ : ce qu'on voit

La règle d'or : la logique ne dessine jamais, et le rendu ne change jamais les règles. Le rendu lit le monde et le peint, c'est tout. Grâce à ça, quand on passera aux blocs façon Minecraft, on pourra changer le dessin sans casser la physique, ou l'inverse.

FichierSon travailComme…
main.jsBranche toutes les pièces et fait tourner la boucle de jeu.le cœur qui bat
config.jsTous les réglages chiffrés : gravité, force du saut, vitesses…le tableau de bord
moteur/entrees.jsTransforme les touches en intentions (« gauche », « sauter »).les oreilles
moteur/physique.jsGravité, déplacement, sol, collisions.les lois de la nature
moteur/evenements.jsPermet d'annoncer « j'ai sauté ! » à qui veut l'entendre.la radio
logique/joueur.jsLes données du héros et ses règles (quand a-t-il le droit de sauter ?).le personnage
logique/obstacles.jsCrée, fait avancer et supprime les obstacles.le metteur en scène
logique/monde.jsContient tout l'état de la partie et les phases (accueil, jeu, perdu).la mémoire vive
donnees/sauvegarde.jsÉcoute la radio et écrit le record et les statistiques dans la base.le carnet de souvenirs
affichage/rendu.jsDessine le monde, image par image, et les rayons X.le peintre
affichage/sous-le-capot.jsLe panneau sous le jeu : état en direct, journal, base de données.le tableau de bord du mécano

❤️ La boucle de jeu : le cœur qui bat

Un jeu vidéo, c'est une boucle qui ne s'arrête jamais. Environ 60 fois par seconde, l'écran demande une nouvelle image. À chaque fois, le jeu :

  1. regarde combien de temps s'est écoulé ;
  2. met à jour le monde par petits pas de 1/120 s (8,3 millisecondes) : lire les touches, bouger, appliquer la gravité, tester les collisions ;
  3. dessine le résultat.
Image 1 · 0 à 16,7 ms
mise à jourmise à jourdessin
Image 2 · 16,7 à 33,3 ms
mise à jourmise à jourdessin
Image 3 · 33,3 à 50 ms
mise à jourmise à jourdessin

Pourquoi des pas de temps fixes ? Pour que le saut ait exactement la même hauteur sur un ordinateur rapide et sur un ordinateur lent. Sur un vieil ordi, on affiche moins d'images, mais le monde avance pareil. Dans le panneau « État en direct », compare « images par seconde » et « mises à jour par seconde ».

⚡ Le voyage d'une touche : de ton doigt à l'écran

  1. 0 ms · Tu appuies sur Espace. Le navigateur envoie un message « keydown, code = Space ».
  2. 0 ms · entrees.js le reçoit et note : « intention sauter en attente ».
  3. ≤ 8 ms · À la mise à jour suivante, joueur.js consomme l'intention. Il vérifie son état : est-il au-sol ? Si oui…
  4. ≤ 8 ms · … il fixe sa vitesse verticale : vy = -860 px/s (négatif = vers le haut), passe dans l'état monte et annonce saut à la radio.
  5. ≤ 8 ms · La radio prévient la sauvegarde (qui compte le saut) et le journal (qui l'écrit).
  6. ≤ 17 ms · rendu.js dessine le héros un peu plus haut. Tu vois le saut commencer.
  7. + 8 ms, + 8 ms… · À chaque pas, la gravité ajoute 20 px/s à vy. Le héros ralentit, s'arrête en l'air, puis retombe.
  8. ≈ 720 ms · physique.js détecte qu'il touche le sol : on le pose dessus, vy = 0, état au-sol, annonce atterrissage.

Tout ça en moins de 2 centièmes de seconde, c'est pour ça que le jeu paraît instantané. Pour le voir en vrai : touche Échap pour mettre en pause, puis N pour avancer d'un pas à la fois.

🔀 La machine à états du joueur

Le héros est toujours dans un seul état à la fois. Selon son état, il n'a pas les mêmes droits.

au-sol monte descend saut demandé vy devient positif touche le sol peut sauter ✔ ne peut pas sauter ✘ ne peut pas sauter ✘

Plus un 4ᵉ état, touche, quand un obstacle nous percute : plus rien ne bouge. Plus tard, on ajoutera sûrement « nage », « grimpe », « creuse »…

🍎 La physique du saut : joue avec les nombres

Le saut dépend de deux réglages de config.js : la force du saut (vitesse de départ vers le haut) et la gravité (qui freine la montée puis accélère la chute). Bouge les curseurs pour voir ce qui change :

Hauteur :

Durée en l'air :

Les formules (pour les curieux) : hauteur = force² ÷ (2 × gravité), durée = 2 × force ÷ gravité. La trajectoire est une parabole, comme un ballon qu'on lance.

🎮 Les astuces invisibles qui rendent le jeu agréable

⏳ La mémoire de saut

Si tu appuies sur saut juste avant d'atterrir (moins de 0,12 s), le jeu s'en souvient et saute dès que tu touches le sol. Sans ça, le jeu semblerait « rater » des appuis.

✂️ Le saut variable

Si tu relâches la touche pendant la montée, la vitesse vers le haut est coupée (× 0,45). Appui court = petit saut, appui long = grand saut.

🤏 La zone de collision gentille

La zone qui compte pour les collisions (en rouge dans les rayons X) est 4 px plus petite que le dessin. Quand ça frôle, c'est le joueur qui gagne.

🧠 Mémoire vive ou base de données ?

🌍 La mémoire vive (le monde)

Position du héros, obstacles, score de la partie… Change 120 fois par seconde. Disparaît quand on ferme la page.

C'est rapide, mais ça oublie tout.

🗄️ La base de données

Record, nombre de parties, total de sauts, 5 dernières parties. Écrite seulement à la fin d'une partie. Reste même si on éteint l'ordinateur.

C'est plus lent, donc on y écrit rarement et seulement l'important.

Pour l'instant, la base est rangée dans ton navigateur (« localStorage »), au format JSON, une façon d'écrire des objets sous forme de texte. Dans Minecraft, le monde entier est sauvegardé de cette manière, bloc par bloc. On y arrivera à l'étape 17.

🔍 Missions d'exploration

Ouvre le jeu, active les rayons X (X) et mène l'enquête :

  1. Mets le ralenti (L) et regarde la flèche verte pendant un saut. Que devient-elle au sommet ?
  2. En pause (Échap), appuie sur N plusieurs fois pendant un saut. De combien change vy à chaque pas ?
  3. Joue une partie et surveille « obstacles en mémoire ». Monte-t-il à l'infini ? Pourquoi ?
  4. Fais une partie, puis regarde la base de données. Ferme la page, rouvre-la : qu'est-ce qui est resté, qu'est-ce qui a disparu ?
  5. Appuie sur saut juste avant d'atterrir. Que dit le journal ?

❓ Quiz

Pourquoi le rendu n'a-t-il pas le droit de changer la position du héros ?

Parce qu'il ne doit faire qu'un seul travail : dessiner. Si tout le monde modifiait tout, on ne saurait plus qui a causé un bug. Les règles sont dans logique/, le dessin dans affichage/.

Au sommet d'un saut, combien vaut vy ?

0 ! Le héros ne monte plus et ne descend pas encore. C'est à ce moment-là que l'état passe de monte à descend.

Pourquoi supprime-t-on les obstacles sortis de l'écran ?

Sinon la liste grandirait à chaque obstacle, pour toujours. Après une longue partie, le jeu passerait son temps à mettre à jour des milliers d'obstacles invisibles et finirait par ramer.

Pourquoi la sauvegarde n'écrit-elle pas dans la base à chaque saut ?

Écrire dans une base de données prend beaucoup plus de temps que modifier la mémoire vive. On compte les sauts en mémoire, et on écrit tout d'un coup à la fin de la partie.

Si on double la gravité sans toucher la force du saut, le saut est deux fois moins haut. Vrai ou faux ?

Vrai : hauteur = force² ÷ (2 × gravité). Et il dure aussi deux fois moins longtemps. Vérifie avec le simulateur !

🗺️ Étape 2 : un monde en blocs ✅ livrée · à valider

Le héros ne reste plus au même endroit : il explore un monde sans fin, fait de blocs, avec des trous, des plateformes et des drapeaux. La caméra le suit.

📋 La demande de Maxance

Le fichier complet est dans demandes/02-un-monde-en-blocs.md.

Quoi : un sol en blocs avec des trous et des plateformes, et une caméra qui me suit quand j'avance vers la droite.

Comment : trou → retour au dernier drapeau. Plateformes à 2 ou 3 blocs de haut. Obstacle touché → « Aïe ! » et tout recommence à zéro. Monde sans fin. Score = blocs parcourus. Trous de 1 à 3 blocs.

Pour comprendre : comment le jeu sait sur quelle case je suis, et comment on range un monde entier dans la mémoire.

✍️ Au début, il manquait 4 règles (obstacle, taille du monde, score, largeur des trous). Claude a posé la question avant de coder : c'est ça, une demande précise !

✅ Ce que tu peux vérifier

  • ☐ Monte sur une plateforme et marche dessus : tu ne passes pas à travers.
  • ☐ Tombe exprès dans un trou : tu réapparais au dernier drapeau vert 🚩. (Changé à l'étape 4 : tu réapparais devant le trou.)
  • ☐ Touche X : la grille apparaît avec le numéro colonne,ligne de chaque case.
  • Bonus : un trou environ tous les 10 blocs, un drapeau tous les 30 (regarde leur n° de colonne).
  • Bonus : quand tu réapparais, la caméra te rattrape en moins d'une demi-seconde (essaie en ralenti L).
  • Bonus : touche un obstacle → « Aïe ! », puis Espace : nouveau monde, score à 0. (Changé à l'étape 3 : les obstacles sont devenus solides, seule la lave fait perdre.)

🧮 Comment le jeu sait sur quelle case tu es

Le héros connaît sa position en pixels : par exemple x = 1 300. Une case fait 40 pixels de large. Pour trouver le numéro de la case, le jeu fait une division et garde seulement la partie entière (il « jette » ce qui est après la virgule) :

colonne = partie entière de (x ÷ 40)   ·   ligne = partie entière de (y ÷ 40)

Exemple : 1 300 ÷ 40 = 32,5 → colonne 32. Les pieds sont à y = 439 : 439 ÷ 40 = 10,97 → ligne 10.

Le jeu prend le point jaune au milieu des pieds du héros (visible avec les rayons X). La case trouvée est surlignée en jaune, à l'écran et dans « La carte en mémoire ».

C'est grâce à ce calcul que le jeu sait s'il y a du sol sous tes pieds : il regarde la case juste en dessous. Si elle contient 0 (de l'air), tu tombes. C'est aussi comme ça que la physique t'empêche de rentrer dans un mur : avant de te laisser avancer, elle vérifie les cases que ton corps va toucher.

🗄️ Comment on range un monde entier dans la mémoire

Le monde est une grille de numéros, comme une feuille à petits carreaux où chaque carreau contient un chiffre : 0 air, 1 herbe, 2 terre, 3 planche. Le jeu la range colonne par colonne, comme des tiroirs posés côte à côte : chaque tiroir contient les 14 cases d'une colonne, de haut en bas.

ligne col 0col 1col 2col 3col 4col 5 89101112 000330 000000 000000 110011 220022 Un tiroir = une colonne : colonnes[4] = [0,…,3,0,0,1,2,2] Une case : colonnes[4][11] = 1 → de l'herbe Colonnes 2 et 3 : que des 0 → un trou. Ligne 8, colonnes 3 et 4 : des 3 → une plateforme. (on ne montre ici que les lignes 8 à 12)
0 = air1 = herbe2 = terre3 = planche

On appelle ça un tableau à 2 dimensions : un tableau (la liste des colonnes) qui contient des tableaux (les cases de chaque colonne). Dans le code : terrain.colonnes[colonne][ligne]. Le panneau 🗺️ La carte en mémoire, sous le jeu, te montre ces numéros en direct.

🏗️ Un monde sans fin… fabriqué au fur et à mesure (depuis l'étape 6, il s'arrête au drapeau n° 10, mais il est toujours fabriqué au fur et à mesure)

Impossible de ranger un monde infini dans la mémoire ! Alors le jeu le fabrique par tronçons de 30 colonnes, juste avant que la caméra les montre. Chaque tronçon commence par un drapeau. Minecraft fait pareil avec ses « chunks » de 16 blocs.

Dans le journal : « 🏗️ Tronçon n° 3 fabriqué… → 1 680 cases en mémoire ». Chaque tronçon ajoute 30 × 14 = 420 cases.

🎲 La graine : le même hasard, rejoué

Les trous et les plateformes sont placés « au hasard », mais un hasard fabriqué à partir d'un nombre : la graine. Même graine = même monde, exactement comme les graines de Minecraft. Elle est affichée dans l'état en direct.

🧱 Les obstacles, rangés à part (jusqu'à l'étape 3)

Les caisses, tours et murets ne sont pas dans la grille : ils sont dans une liste à part, monde.obstacles. Parce qu'une tour occupe 2 cases mais reste un seul objet, avec son numéro et sa règle à elle : la toucher, c'est perdu.

🎥 La caméra : coordonnées « monde » et coordonnées « écran »

Le monde est bien plus large que l'écran. La caméra est une fenêtre qui glisse au-dessus du monde. Elle ne retient qu'un seul nombre : camera.x, la position du bord gauche de l'écran dans le monde.

x = 0 (début du monde) → sans fin 🎥 l'écran (960 px) camera.x = 2 000 héros x monde = 2 320 x écran = 2 320 − 2 000 = 320

La formule magique : x sur l'écran = x dans le monde − camera.x. Le héros vit à x = 2 320 dans le monde, mais il est dessiné à 320 px du bord de l'écran.

La caméra ne saute pas d'un coup : à chaque pas de 1/120 s, elle parcourt une partie de l'écart qui reste. Au début l'écart est grand, alors elle va vite ; puis elle ralentit en arrivant. Réglage : camera.tempsDeReaction = 0,07 s. Après une demi-seconde, il reste moins de 0,1 % de l'écart : même quand tu réapparais 30 blocs en arrière, elle t'a rattrapé.

🧱 Les collisions avec la grille

À l'étape 1, le sol était une simple ligne (y = 440). Maintenant, le héros peut toucher des cases partout : sol, bord d'un trou, dessous ou dessus d'une plateforme. À chaque pas, moteur/physique.js :

  1. déplace le héros à l'horizontale. Si son bord avant entre dans une case solide, il est remis contre le bord de la case : c'est un mur ;
  2. puis à la verticale. S'il entre dans une case solide en descendant, il est posé dessus (au sol) ; en montant, sa tête cogne (tete-cognee dans le journal).

Pourquoi en deux temps ? Pour savoir de quel côté on a touché. Si on bougeait en diagonale d'un coup, le jeu ne saurait pas si le héros a cogné un mur ou atterri sur le sol.

Nouveau fichierSon travailComme…
logique/terrain.jsRange la grille de numéros et fabrique les tronçons (sol, trous, plateformes).le cartographe
moteur/camera.jsSuit le héros en douceur, et retient camera.x.le cadreur
moteur/hasard.jsUn hasard qui rejoue toujours pareil avec la même graine.le dé truqué
moteur/physique.jsModifié : collisions avec les cases de la grille.les lois de la nature
donnees/sauvegarde.jsModifié : version 2. Le record compte des blocs ; l'ancien record d'obstacles est gardé à part dans etape1.le carnet de souvenirs

🔍 Missions d'exploration

Ouvre le jeu, active les rayons X (X) et mène l'enquête :

  1. Mets-toi en pause (Échap) et lis la case du héros. Vérifie le calcul toi-même : x ÷ 40 donne bien la colonne ?
  2. Dans « La carte en mémoire », trouve un trou et une plateforme. Quels numéros vois-tu ?
  3. Monte sur une plateforme. Que devient « case sous les pieds » dans l'état en direct ?
  4. Cours vers la droite et surveille « cases en mémoire ». De combien augmente-t-il à chaque tronçon ? Pourquoi ?
  5. Tombe dans un trou en ralenti (L). Regarde l'écart de la caméra : combien de temps met-elle pour revenir à 0 ?
  6. Regarde « x sur l'écran » quand tu cours : pourquoi reste-t-il presque toujours autour de 305 ?
  7. Ouvre la base de données : trouve ton ancien record de l'étape 1. Où a-t-il été rangé ?

❓ Quiz

Le héros est à x = 1 000. Sur quelle colonne est-il ?

1 000 ÷ 40 = 25 → colonne 25. (Et à x = 1 039 : 1 039 ÷ 40 = 25,97… → encore la colonne 25 ! On garde seulement la partie entière.)

Que contient colonnes[40][11] s'il y a un trou à la colonne 40 ?

0 : de l'air. Dans un trou, toute la colonne est remplie de 0, c'est pour ça qu'on tombe jusqu'en bas.

Pourquoi le jeu ne fabrique-t-il pas tout le monde dès le début ?

Parce qu'il est sans fin : il faudrait une mémoire infinie ! On fabrique seulement ce qui va bientôt être visible, tronçon par tronçon.

Le héros est à x = 5 000 dans le monde et camera.x = 4 700. Où est-il dessiné sur l'écran ?

5 000 − 4 700 = 300 px du bord gauche de l'écran.

Pourquoi les obstacles ne sont-ils pas rangés dans la grille, comme le sol ?

Parce qu'ils ont leurs propres règles (les toucher = perdu) et qu'une tour ou un muret prend plusieurs cases tout en restant un seul objet, avec un numéro. Une liste d'objets est plus pratique pour ça.

Avec la même graine, obtient-on le même monde ?

Oui ! Le hasard à graine rejoue toujours les mêmes nombres dans le même ordre. C'est comme ça que deux joueurs de Minecraft peuvent partager un monde juste avec un nombre.

🔥 Étape 3 : solide ou liquide ✅ livrée · à valider

Avant, toucher un bloc, c'était perdu, même en atterrissant dessus. Maintenant, chaque bloc est soit solide, soit liquide.

📋 La demande de Maxance

Le fichier complet est dans demandes/03-solide-ou-liquide.md.

Le problème : « quand j'atterris sur un bloc, je meurs ». Le jeu obéissait à la règle de l'étape 1 : « toucher un obstacle = perdu ». Pour lui, atterrir dessus, c'était le toucher.

La nouvelle règle : caisses, murets et tours sont solides : on monte dessus, et par le côté c'est un mur. La lave est liquide : on passe à travers, et c'est « Aïe ! » et retour à zéro.

✅ Ce que tu peux vérifier

  • ☐ Atterris sur une caisse, un muret ou une tour : tu ne meurs pas, tu peux marcher dessus. (Changé à l'étape 5 : seule la tour est sans danger.)
  • ☐ Fonce dans une caisse sans sauter : elle te bloque comme un mur (« contre un mur ? oui » dans l'état en direct).
  • ☐ Tombe dans la lave 🟧 : « Aïe ! » et tout recommence à zéro. (Changé à l'étape 4 : la lave coûte une vie.)
  • Bonus : marche au bord de la lave, juste un peu au-dessus : tant que tes pieds sont sur l'herbe, tu ne brûles pas.

🧪 Comment le jeu sait qu'un bloc est solide ou liquide

Chaque case de la grille contient un numéro (tu l'as vu à l'étape 2). Maintenant, le jeu a aussi une fiche de propriétés pour chaque numéro : une liste qui dit « solide : oui ou non ». Quand la physique veut savoir si le héros peut avancer, elle lit le numéro de la case, puis regarde dans la fiche.

NuméroNomSolide ?Ce qui se passe
0airnonon passe à travers (et on tombe si c'est sous les pieds)
1 2 3herbe, terre, plancheouion marche dessus
4bois (caisse, muret)ouion marche dessus ; par le côté, c'est un mur
5pierre (tour)ouipareil : on peut monter dessus
6lavenon, liquideon passe à travers… et on brûle : perdu !

Dans le code (logique/terrain.js), la fiche ressemble à ça : SOLIDES = [non, oui, oui, oui, oui, oui, non]. La case n° 4 de la liste dit si le bois est solide. Changer une seule valeur dans cette liste suffit pour que tout le jeu traite ce bloc autrement !

💡 La grande idée : les obstacles sont entrés dans la grille

À l'étape 2, les obstacles étaient rangés à part, avec leur propre règle « toucher = perdu ». Maintenant, une caisse est écrite dans la grille, comme le sol, avec le numéro 4. Résultat : la physique la traite exactement comme le sol. On n'a rien eu à coder pour pouvoir marcher dessus ou s'y cogner : c'est la même règle que pour une plateforme.

Seule la lave a une règle spéciale, dans logique/monde.js : si la zone rouge du héros touche une mare de lave, c'est perdu. On garde aussi la liste monde.obstacles, mais seulement pour donner un nom et un numéro à chaque obstacle (journal, rayons X).

🔍 Missions d'exploration

  1. Pousse contre une tour. Que dit le journal ? Et « contre un mur ? » dans l'état en direct ?
  2. Monte sur une caisse. Que devient « case sous les pieds » ?
  3. Dans « La carte en mémoire », trouve une tour, une caisse et une mare de lave. Quels numéros ont-elles ?
  4. Avec les rayons X, compare le cadre d'une caisse (blanc) et celui de la lave (rouge). Pourquoi ces couleurs ?
  5. En pause (Échap), avance pas à pas (N) au-dessus de la lave : à quel moment exact perds-tu ?

❓ Quiz

Pourquoi mourais-tu en atterrissant sur une caisse ?

Parce que la règle de l'étape 1 disait « si je touche un obstacle, j'ai perdu ». Un ordinateur fait exactement ce qu'on lui dit : atterrir dessus, c'est aussi toucher. Il fallait changer la règle, pas réparer un bug.

Que faudrait-il changer pour que le bois devienne liquide ?

Une seule valeur : la 5ᵉ case de la liste SOLIDES (le numéro 4, car on compte à partir de 0), qui passerait de true à false.

Pourquoi n'a-t-on rien codé de spécial pour marcher sur une caisse ?

Parce qu'elle est écrite dans la grille comme le sol, avec un numéro solide. La physique ne fait pas la différence entre de l'herbe et une caisse : les deux sont « solides ».

❤️ Étape 4 : 5 vies et fosses de lave ✅ livrée · à valider

Tu as maintenant 5 vies. Tomber ne veut plus dire tout recommencer : tu réapparais, soit devant le trou, soit au dernier drapeau. Et une grande fosse de lave t'attend entre chaque paire de drapeaux.

📋 La demande de Maxance

Le fichier complet est dans demandes/04-vies-et-fosses-de-lave.md.

Règles : 5 vies. Trou = 1 vie en moins, retour devant le trou. Lave = 1 vie en moins, retour au dernier drapeau. Plus de vie = « Aïe ! » et tout recommence à zéro. Une fosse de lave tous les 30 blocs, en plus des petites mares.

✍️ Maxance ne pouvait pas « tester » ce qui se passe à 0 vie, puisque ça n'existait pas encore. Il a dû l'imaginer et décider. C'est exactement le travail d'un directeur de jeu !

✅ Ce que tu peux vérifier

  • ☐ 5 cœurs rouges en haut à gauche.
  • ☐ Tombe dans un trou : un cœur devient gris et tu réapparais juste devant le trou.
  • ☐ Tombe dans la lave : un cœur en moins, et retour au dernier drapeau vert.
  • ☐ Au 5ᵉ cœur perdu : « Aïe ! Plus de vies », puis Espace pour recommencer à zéro.
  • ☐ Une grande fosse de lave de 3 blocs entre chaque paire de drapeaux (regarde son n° de colonne : 16, 46, 76…).
  • Vérifie aussi que la page affiche bien « version 4 » en haut à droite.

🔢 Comment le jeu retient tes vies

C'est tout simple : le monde contient une case mémoire monde.vies, qui vaut 5 au début de la partie. Chaque chute fait vies = vies − 1. Ensuite, le jeu pose une question : « reste-t-il des vies ? »

Tombé ! trou ou lave vies = vies − 1 un cœur devient gris vies > 0 ? OUI : on réapparaît trou → devant le trou lave → dernier drapeau NON : « Aïe ! » tout recommence à zéro

Les vies sont dans la mémoire vive (le monde), pas dans la base de données : quand la partie recommence, elles reviennent à 5. Le nombre 5 est rangé dans config.js (vies: 5). Change-le, et tout le jeu suit : même le nombre de cœurs dessinés !

📍 Comment le jeu sait où te faire réapparaître

🕳️ Dans un trou : juste devant

Le jeu part de la colonne où tu es tombé et recule case par case tant que la case du sol (ligne 11) vaut 0 (de l'air) : il trouve ainsi le bord gauche du trou. Ensuite, il recule encore jusqu'à une colonne où tu peux tenir debout : de l'herbe sous les pieds, et pas de plateforme au-dessus de la tête.

Dans le journal : « Chute dans le trou (bord gauche : colonne 52) → retour juste devant, colonne 51 ».

🔥 Dans la lave : au dernier drapeau

Le monde retient le numéro du dernier drapeau touché : monde.dernierDrapeau. Il suffit de regarder la colonne de ce drapeau dans la liste monde.drapeaux, et d'y replacer le héros.

🏗️ Une fosse tous les 30 blocs

Chaque tronçon de 30 colonnes réserve une place au milieu (colonnes 16, 17, 18 du tronçon) pour la fosse, avec 2 blocs d'herbe de chaque côté. Les trous et les plateformes n'ont pas le droit d'y aller.

Du coup, il y a un peu moins de trous vides : 2 par tronçon au lieu de 3. Avec la fosse, ça fait toujours environ un « trou » tous les 10 blocs.

🗃️ Le problème des versions mélangées (et sa solution)

Pour aller plus vite, ton navigateur garde une copie de chaque fichier pendant 10 minutes : c'est le cache. Après une mise à jour, il pouvait mélanger un vieux fichier de règles avec les nouveaux. C'est pour ça que tu mourais encore en atterrissant sur les blocs !

La solution : chaque fichier porte maintenant un numéro de version (config.js?v=4). Pour le navigateur, un nouveau numéro veut dire un nouveau fichier. La page affiche « version 4 » en haut ; si les fichiers ne correspondent pas, elle affiche « ⚠️ versions mélangées : fais Ctrl + F5 ».

🔍 Missions d'exploration

  1. Tombe dans un trou et lis le journal : quelle est la colonne du bord du trou, et celle où tu réapparais ?
  2. Regarde « vies » dans l'état en direct pendant que tu tombes. Quand change-t-il exactement ?
  3. Trouve une fosse avec les rayons X. Note sa colonne, puis celle de la suivante : quelle différence ?
  4. Dans « La carte en mémoire », repère les trois 6 côte à côte de la fosse.
  5. Tombe exprès 5 fois. Que contient la base de données après la partie ? Les vies y sont-elles ?

❓ Quiz

Tu as 2 vies et tu tombes dans la lave. Que se passe-t-il ?

vies = 2 − 1 = 1. Il reste une vie, donc tu réapparais au dernier drapeau.

Tu as 1 vie et tu tombes dans un trou. Que se passe-t-il ?

vies = 1 − 1 = 0. Plus de vie : « Aïe ! Plus de vies » et tout recommence à zéro.

Pourquoi les vies ne sont-elles pas dans la base de données ?

Parce qu'elles ne servent que pendant une partie. La base de données garde ce qui doit survivre quand on ferme la page, comme le record.

Pourquoi réapparaître devant le trou, et pas dedans ?

Dedans, tu retomberais tout de suite ! Le jeu recule jusqu'à une case d'herbe où tu tiens debout, pour que tu puisses reprendre ton élan et ressauter.

📦 Étape 5 : attention au bois ! ✅ livrée · à valider

Les caisses et les murets en bois sont redevenus des pièges. Seules les tours en pierre restent sans danger.

📋 La demande de Maxance

Le fichier complet est dans demandes/05-attention-au-bois.md.

Règles : toucher une caisse ou un muret en bois (dessus ou par le côté) = 1 vie en moins et retour au dernier drapeau. Les tours en pierre sont sans danger : on monte dessus.

💡 Remarque de directeur : à l'étape 3, Maxance avait voulu que tous les blocs soient solides. En jouant, il a changé d'avis pour rendre le jeu plus difficile. C'est normal : on teste, puis on ajuste !

✅ Ce que tu peux vérifier

  • ☐ Atterris sur une caisse ou un muret : un cœur en moins, retour au dernier drapeau. (Changé à l'étape 8 : la caisse est redevenue sans danger, seul le muret à pics est mortel.)
  • ☐ Fonce dans une caisse par le côté : pareil.
  • ☐ Monte sur une tour en pierre : aucun danger, tu peux marcher dessus.
  • Avec les rayons X : cadre rouge « piège : ne pas toucher ! » pour le bois, cadre blanc pour la pierre.
  • Vérifie que la page affiche « version 5 ».

🧪 Changer tous les blocs en bois d'un coup

Tu te souviens de la fiche de propriétés de l'étape 3 ? Pour faire ta demande, il a suffi de changer deux cases dans les listes de logique/terrain.js, pour le numéro 4 (le bois) :

NuméroNomSolide ?Mortel ?
1 2 3herbe, terre, plancheouinon
4bois (caisse, muret)non (avant : oui)oui (nouveau)
5pierre (tour)ouinon
6lavenonoui

La nouvelle liste MORTELS dit quels blocs coûtent une vie. La règle, dans logique/monde.js, ne parle plus de « lave » : elle dit « si le héros touche un obstacle mortel, il perd une vie et retourne au drapeau ». Toutes les caisses et tous les murets du monde, même ceux qui ne sont pas encore fabriqués, obéissent donc à la nouvelle règle.

C'est l'avantage de décrire les blocs par des données (des listes de oui/non) plutôt que par du code : pour changer le jeu, on change une valeur.

🔍 Missions d'exploration

  1. Touche une caisse. Que dit le journal ? Et « pièges en bois touchés » dans l'état en direct ?
  2. Avec les rayons X, compte les cadres rouges et les cadres blancs sur l'écran.
  3. Pousse contre une tour. Le journal dit « Bloqué par un mur de pierre » : pourquoi pas pour le bois ?
  4. Perds ta dernière vie sur une caisse : que dit l'écran « Aïe ! » ?

❓ Quiz

Combien de valeurs a-t-il fallu changer pour que le bois devienne mortel ?

Deux : « solide » passe de oui à non, et « mortel » (nouvelle liste) vaut oui pour le numéro 4.

Pourquoi le bois n'est-il plus solide ?

Parce que de toute façon, le toucher fait perdre une vie. S'il restait solide, on pourrait « se poser » dessus une fraction de seconde avant la règle mortelle : c'est plus simple et plus clair qu'il soit juste mortel.

Que faudrait-il changer pour que la pierre devienne mortelle elle aussi ?

Mettre true pour le numéro 5 dans la liste MORTELS. (Et sûrement false dans SOLIDES.)

🏆 Étape 6 : pseudo, arrivée et classement ✅ livrée · classement en ligne à venir

Chaque joueur écrit son pseudo, la course s'arrête au drapeau n° 10, et un tableau d'honneur range les 10 meilleurs.

📋 La demande de Maxance

Le fichier complet est dans demandes/06-pseudo-arrivee-classement.md.

Règles : un pseudo avant de jouer. Arrivée au drapeau n° 10 (300 blocs). Classement des 10 meilleurs joueurs : plus de blocs, puis plus de vies, puis le plus rapide. Colonnes : rang, joueur, blocs, vies, temps.

⏳ Maxance a choisi un classement en ligne pour tous les joueurs du monde. Pour l'instant, il réunit les joueurs de cet ordinateur : la version en ligne attend une base de données sur Internet (voir plus bas).

✅ Ce que tu peux vérifier

  • ☐ À l'accueil, écris ton pseudo puis Entrée. Sans pseudo, le jeu refuse.
  • ☐ Pendant que tu écris, les touches du jeu (X, P, espace…) ne font rien.
  • ☐ Arrive au drapeau à damier n° 10 : « Bravo, tu es arrivé ! ».
  • ☐ À la fin, le classement s'affiche avec ta ligne en jaune.
  • ☐ Joue avec plusieurs pseudos : l'ordre respecte blocs, puis vies, puis temps.
  • Espace : rejouer avec le même pseudo. C : changer de pseudo. Vérifie « version 6 ».

🥇 Comment le jeu range les joueurs dans l'ordre

Pour trier, l'ordinateur compare les joueurs deux par deux, et une petite fonction répond à la question « qui passe devant ? ». Elle suit tes 3 règles, dans l'ordre :

  1. Qui a le plus de blocs ? S'ils ne sont pas à égalité, c'est réglé.
  2. Sinon, qui a le plus de vies ?
  3. Sinon, qui a mis le moins de temps ?

Exemple : Léa (300 blocs, 4 vies, 100 s) et Tom (300 blocs, 4 vies, 120 s) sont à égalité sur les blocs et les vies : Léa est devant, parce qu'elle a été plus rapide. Avec cette seule fonction, .sort() range toute la liste, comme on range des cartes à jouer. Ensuite, on garde les 10 premiers.

Une seule ligne par joueur : si tu fais mieux que ta meilleure partie, ta ligne est remplacée ; sinon, elle ne bouge pas (le journal dit « reste 2e »). « Max » et « max » comptent comme le même joueur.

🌍 Pourquoi un classement en ligne a besoin d'un serveur

💻 Aujourd'hui : dans ton ordinateur

Le classement est rangé dans la base de données de ton navigateur, avec ton record. Tous ceux qui jouent sur cet ordinateur y apparaissent. Mais ton copain, chez lui, a son propre classement, qui ne voit pas le tien.

☁️ Demain : sur un serveur

Pour que tout le monde voie le même tableau, chaque jeu doit envoyer son score à un ordinateur allumé en permanence sur Internet (un serveur), qui garde la liste et la renvoie à tous. C'est Cyril qui doit choisir ce service et créer le compte.

Bonne nouvelle : tout ce qui touche au rangement du classement est dans un seul fichier, donnees/sauvegarde.js. Pour passer en ligne, c'est le seul fichier du jeu à changer. Les règles du tri (logique/classement.js) ne changeront pas.

⚠️ Un classement en ligne pose de nouvelles questions de directeur de jeu : que faire si quelqu'un écrit un gros mot comme pseudo ? Et si un tricheur envoie un faux score ? On en reparlera à ce moment-là.

🛡️ Un pseudo, ce n'est que du texte

Si quelqu'un écrit <b>Zoé</b> comme pseudo, le jeu doit l'afficher tel quel, et pas le comprendre comme du code de page web. C'est pour ça que le panneau écrit les pseudos avec textContent (« écris ce texte ») et jamais avec innerHTML (« fabrique ce code »). C'est une règle de sécurité importante dès qu'on affiche ce que quelqu'un d'autre a tapé.

🔍 Missions d'exploration

  1. Joue avec 3 pseudos différents, puis regarde le panneau « 🏆 Classement » et la clé classement dans la base de données.
  2. Rejoue avec le premier pseudo, mais fais moins bien. Que dit le journal ? La ligne a-t-elle changé ?
  3. Pendant une partie, surveille « blocs avant l'arrivée » dans l'état en direct.
  4. Avec les rayons X, trouve le drapeau d'arrivée : quelle est sa colonne ? Pourquoi celle-là ?
  5. Regarde la base de données : quel est son numéro de version maintenant ? Pourquoi a-t-il changé ?

❓ Quiz

Ana : 300 blocs, 2 vies, 90 s. Bob : 300 blocs, 4 vies, 150 s. Qui est premier ?

Bob ! À égalité de blocs, on regarde les vies avant le temps : 4 vies contre 2.

Pourquoi ton copain ne voit-il pas ton score chez lui ?

Parce que le classement est rangé dans la base de données de ton navigateur. Pour le partager, il faut un serveur sur Internet.

Pourquoi la base de données est-elle passée en version 3 ?

Parce que son format a changé : on a ajouté le classement et le dernier pseudo. Le numéro de version permet de convertir les anciennes sauvegardes sans perdre ton record.

Pourquoi le drapeau d'arrivée est-il à la colonne 302 ?

Le drapeau n° 10 est au début du 11ᵉ tronçon : 10 × 30 = 300, plus 2 (le drapeau est dans la 3ᵉ colonne du tronçon). On part de la colonne 2, donc il y a bien 300 blocs à parcourir.

🔥 Étape 7 : les flammes de la lave ✅ livrée · validée par Maxance

Tomber dans la lave, maintenant, ça se voit : le héros brûle une seconde sur place, entouré d'une trentaine de petites flammes.

📋 La demande de Maxance

Le fichier complet est dans demandes/07-flammes-de-la-lave.md.

Règles : le héros brûle 1 seconde sur place (1A), puis réapparaît au dernier drapeau. Une trentaine de flammes, qui durent 2 secondes chacune (2B).

✅ Ce que tu peux vérifier

  • ☐ Tombe dans la lave : ton héros clignote et des flammes montent de lui.
  • ☐ Au bout d'une seconde : un cœur en moins, retour au drapeau.
  • ☐ Les flammes continuent de s'éteindre dans la lave après ton départ.
  • Essaie en ralenti (L) ou en pause (Échap puis N) pour bien les voir. Vérifie « version 7 ».

✨ Comment on fabrique des flammes : les particules

Une flamme de jeu vidéo, ce n'est pas un dessin tout fait : c'est plein de particules. Chaque particule est un tout petit objet, juste quelques nombres :

{ x, y, vx, vy, vie, vieMax, taille } : où elle est, à quelle vitesse elle bouge, combien de temps il lui reste à vivre, et sa taille.

À chaque pas de 1/120 s, pour chaque particule :

  1. elle monte (vy est négatif) et ondule de gauche à droite ;
  2. sa vie baisse ;
  3. quand sa vie arrive à 0, elle est retirée de la liste pour libérer la mémoire.

Le peintre regarde l'âge de chaque particule (1 − vie ÷ vieMax) pour choisir sa couleur : jeune = grande et jaune, puis orange, vieille = petite et rouge. Trente petits carrés qui font ça en même temps, et ton œil voit… du feu !

Le même outil, moteur/particules.js, pourra servir plus tard pour des étincelles, de la poussière, des bulles d'eau ou de la neige : il ne sait pas que ce sont des flammes.

⏸️ Une petite pause dans les règles

Avant, toucher la lave te renvoyait tout de suite au drapeau. Maintenant, le monde retient que le héros « est en train de brûler » : monde.brulure = { reste: 1 }. Tant que reste est plus grand que 0, le héros ne peut plus bouger. À chaque pas, on enlève un peu de temps et on allume des flammes. À 0, il perd sa vie et réapparaît.

🔍 Missions d'exploration

  1. Tombe dans la lave et regarde « flammes en mémoire » : jusqu'où monte le nombre ? Et ensuite ?
  2. Avec les rayons X, en pause, avance pas à pas (N) : regarde « brûle encore … s » descendre.
  3. Quelle est la couleur d'une flamme qui vient de naître ? Et juste avant de s'éteindre ?
  4. Pourquoi les flammes restent-elles dans la lave alors que tu es déjà reparti au drapeau ?

❓ Quiz

Combien de nombres faut-il pour décrire une flamme ?

Sept : x, y, vx, vy, vie, vieMax et taille (plus un petit nombre pour l'ondulation). Pas besoin d'image !

Que se passerait-il si on ne retirait jamais les flammes éteintes ?

La liste grandirait à chaque chute dans la lave. Au bout d'un moment, le jeu mettrait à jour et dessinerait des milliers de flammes invisibles, et il ralentirait.

Où changer pour avoir 100 flammes au lieu de 30 ?

Dans config.js : brulure.flammes: 100. Rien d'autre à toucher !

💀 Étape 8 : demi-tour, bras levés et squelette qui danse ✅ livrée · à valider

Plus de moonwalk : le héros se retourne quand il recule. Il lève les bras en tombant dans un trou. Et s'il touche un muret à pics… il devient un petit squelette qui danse !

📋 La demande de Maxance

Le fichier complet est dans demandes/08-demi-tour-bras-squelette.md.

« Quand il recule, on dirait qu'il fait un moonwalk. Je n'ai pas demandé Michael Jackson dans le jeu ! »

Règles : caisses et tours sans danger, murets mortels. Trou → bras levés. Muret → squelette qui danse environ 5 secondes, puis retour au drapeau.

✍️ Maxance a d'abord accepté 1 seconde de danse, puis il a changé pour 5 secondes pendant que Claude codait. Grâce à config.js, il a suffi de changer un seul nombre.

✅ Ce que tu peux vérifier

  • ☐ Va à gauche : ton héros regarde à gauche.
  • ☐ Atterris sur une caisse ou une tour : aucun danger.
  • ☐ Touche un muret à pics rouges : un squelette danse environ 5 s, puis un cœur en moins et retour au drapeau. (Changé le 28/09 : 3 s, c'était trop long.)
  • ☐ Tombe dans un trou : ton héros lève les bras.
  • Vérifie « version 8 ».

🪞 Retourner un dessin sans le redessiner

Le héros est toujours dessiné comme s'il regardait à droite. Pour qu'il regarde à gauche, on ne refait pas le dessin : on demande au peintre de travailler dans un miroir.

ctx.scale(-1, 1) veut dire : « multiplie toutes les positions x par −1 ». Un œil dessiné à +5 px à droite du milieu se retrouve à −5 px, donc à gauche.

Le héros retient de quel côté il regarde : joueur.regard = 1 (droite) ou −1 (gauche). Il change seulement quand tu appuies sur ← ou →. Si tu lâches tout, il garde son dernier regard.

Le journal affiche « ↩️ Demi-tour » à chaque fois, et l'état en direct montre « regarde vers ».

🕺 Faire danser un squelette

Le squelette a 4 poses (bras en l'air, bras en bas, jambes écartées, petit saut), qui se suivent en boucle, 6 fois par seconde. Pour choisir la pose, le peintre fait un petit calcul avec le temps écoulé :

pose = partie entière de (temps × 6), puis le reste de la division par 4

Le reste de la division par 4 (qu'on écrit % 4) donne toujours 0, 1, 2 ou 3, puis recommence : 0, 1, 2, 3, 0, 1, 2, 3… C'est l'astuce de toutes les animations qui tournent en boucle, comme les jambes du héros quand il court (lui, il n'a que 2 poses).

🧱 Un nouveau bloc : le bois à pics

La caisse et le muret étaient faits du même bois (n° 4). Pour qu'un seul des deux soit mortel, il a fallu un nouveau numéro : 7 = bois à pics, avec sa propre fiche : solide « non », mortel « oui ». La caisse garde le n° 4, qui redevient solide et sans danger.

🔍 Missions d'exploration

  1. Va à gauche puis à droite plusieurs fois. Combien de « Demi-tour » le journal affiche-t-il ?
  2. Touche un muret et regarde « squelette qui danse ? » dans l'état en direct. Et avec les rayons X ?
  3. En pause, avance pas à pas (N) pendant la danse : combien de pas faut-il pour changer de pose ?
  4. Dans « La carte en mémoire », trouve un muret : quel numéro a-t-il ? Et une caisse ?
  5. Tombe dans un trou en ralenti (L) : à quel moment exact le héros lève-t-il les bras ?

❓ Quiz

Si regard = −1, de quel côté regarde le héros ?

À gauche. Le peintre retourne le dessin avec ctx.scale(-1, 1).

Combien vaut 7 % 4 ?

3 : 7 = 4 × 1 + 3. Le squelette serait donc dans sa 4ᵉ pose (on compte à partir de 0).

Pourquoi a-t-il fallu créer le bloc n° 7 ?

Parce que les propriétés (solide, mortel) vont avec le numéro du bloc. Avec le même numéro, la caisse et le muret auraient forcément les mêmes règles.

Où changer pour que le squelette danse 10 secondes ?

Dans config.js : squelette.duree: 10. (C'est exactement ce qu'on a fait quand Maxance a trouvé 5 s trop long : on a mis 3.)

🧱 Étape 9 : un muret tous les 50 blocs ✅ livrée · à valider

Les murets à pics ne tombent plus au hasard : ils t'attendent à des rendez-vous, environ tous les 50 blocs.

📋 La demande de Maxance

Le fichier complet est dans demandes/09-un-muret-tous-les-50-blocs.md.

Règles : un muret vers les blocs 50, 100, 150, 200, 250 et 300 (1A). Plus aucun muret au hasard.

✅ Ce que tu peux vérifier

  • ☐ Surveille « blocs parcourus » : les murets arrivent vers 50, 100, 150, 200, 250 et juste avant l'arrivée.
  • ☐ Aucun autre muret dans la partie.
  • Le journal annonce chaque muret posé : « Muret à pics posé au bloc … ». Vérifie « version 9 ».

📍 Des rendez-vous plutôt que du hasard

Avant, le jeu tirait au sort un obstacle à chaque place libre. Maintenant, le muret a des rendez-vous fixes : bloc 50, 100, 150… Le cartographe (logique/terrain.js) réserve sa place avant de creuser les trous, exactement comme pour la fosse de lave.

Pourquoi « environ » ? Parfois, le rendez-vous tombe mal :

  • dans la zone du drapeau (le bloc 150 est juste à côté du drapeau n° 5) → le muret recule ou avance de quelques blocs ;
  • trop près d'une fosse de lave : sauter un muret puis une fosse juste derrière serait presque impossible → on les écarte ;
  • sur l'arrivée (bloc 300) → il est posé juste avant, au bloc 294.

Résultat : les murets sont aux blocs 53, 96, 155, 203, 246 et 294 environ. Les écarts vont de 43 à 59 blocs : en moyenne, 50 !

⚠️ Effet de bord : les places réservées laissent moins de place aux trous vides (environ un tous les 20 blocs). Avec les fosses de lave et les murets, il y a toujours un danger à peu près tous les 10 blocs.

❓ Quiz

Combien de murets rencontres-tu dans une partie complète ?

6 : vers les blocs 50, 100, 150, 200, 250 et juste avant l'arrivée (300).

Pourquoi réserver la place du muret avant de creuser les trous ?

Sinon, un trou pouvait être creusé pile au rendez-vous : lors du premier essai, 2 murets sur 3 ne trouvaient pas leur place !

🎒 Étape 10 : lacs de lave et inventaire ✅ livrée · à valider

Trois grands lacs de lave barrent la route. Pour passer, il faut monter sur la plateforme au-dessus… en posant des blocs, comme dans Minecraft !

📋 La demande de Maxance

Le fichier complet est dans demandes/10-lacs-de-lave-et-inventaire.md.

Règles : 3 lacs de 8 blocs, lave 2 blocs plus haute que le sol. Plateforme à 5 blocs de haut. 10 blocs dans le sac pour toute la partie : saut + P = un bloc sous les pieds. Pause : Échap.

✅ Ce que tu peux vérifier

  • ☐ Impossible de sauter par-dessus un lac, ni d'atteindre la plateforme d'un simple saut.
  • ☐ Saute, appuie sur P : une brique apparaît sous tes pieds, ton sac en a une de moins.
  • ☐ Monte sur la plateforme et traverse le lac.
  • ☐ Au sol, P ne fait rien. Échap met en pause.
  • Vérifie « version 10 ».

🧱 Poser un bloc = écrire un numéro dans la grille

Tu te souviens de la grille de l'étape 2 ? Poser un bloc, c'est juste changer un 0 (air) en 8 (brique) dans la bonne case. Dès l'image suivante, le peintre dessine une brique, et la physique la traite comme du sol, car la brique est « solide ».

Quelle case ? Celle qui est entièrement sous les pieds du héros :

colonne = milieu du héros ÷ 40 · ligne = pieds ÷ 40, arrondi au-dessus

On arrondit au-dessus pour que la case soit sous les pieds, jamais dans le héros. Avec les rayons X, pendant un saut, la case visée est encadrée : en vert si P marcherait, en rouge avec la raison sinon (au sol, plus de blocs, case pas vide…).

C'est pour ça qu'il faut sauter : au sol, la case sous les pieds, c'est l'herbe. Elle n'est pas vide !

🌋 Pourquoi on ne peut pas tricher

Trop large

Un saut en courant va jusqu'à environ 5,7 blocs. Le lac en fait 8.

Trop haut

Un saut monte d'environ 3,8 blocs. La plateforme est à 5 blocs.

Rien à côté

Pas de tour ni de plateforme à moins de 7 blocs du lac. Sinon, on pourrait sauter depuis là-haut !

On l'a vérifié avec des dizaines de sauts d'essai : sans bloc, personne n'atteint la plateforme. Avec 1 à 3 blocs, oui.

🔍 Missions d'exploration

  1. Avec les rayons X, saute à côté d'un lac et regarde la case encadrée. Quand devient-elle verte ?
  2. Pose un bloc et trouve le 8 dans « La carte en mémoire ».
  3. Combien de blocs te faut-il, au minimum, pour monter sur la plateforme ?
  4. Appuie sur P au sol. Que dit le journal ?
  5. Si tu gaspilles tes 10 blocs avant le 3ᵉ lac, que se passe-t-il ?

❓ Quiz

Quel numéro écrit-on dans la grille quand on pose un bloc ?

8, la brique. Avant, la case valait 0 (air).

Pourquoi la pause est-elle passée sur Échap ?

Parce que tu as choisi P pour poser les blocs : une touche ne peut pas faire deux choses à la fois.

Si le héros saute avec les pieds à y = 350, dans quelle ligne va le bloc ?

350 ÷ 40 = 8,75, arrondi au-dessus : ligne 9.

⚔️ Étape 11 : épée, monstres, bouclier et potion ✅ livrée · à valider

Ton héros part à l'aventure en armure rigolote, épée à la main. Trois monstres gardent le chemin.

📋 La demande de Maxance

Le fichier complet est dans demandes/11-epee-monstres-bouclier-potion.md.

Règles : épée (T) = 5 dégâts, monstres de 30 PV vers les blocs 100, 200 et avant l'arrivée. Ils gardent le passage et frappent (3 PV). Héros : 20 PV. Bouclier : arrête 3 coups. Potion (H) : +10 PV. À 0 PV : un cœur en moins et retour au drapeau.

✅ Ce que tu peux vérifier

  • ☐ Ton héros a une épée, un casque-casserole à plume, un plastron à pois et un bouclier.
  • ☐ Impossible de passer un monstre vivant, même en sautant.
  • ☐ 6 coups d'épée (T) le battent.
  • ☐ Le bouclier arrête 3 coups, puis casse ; ensuite tu perds 3 PV par coup.
  • ☐ H : +10 PV, une seule fois.
  • ☐ À 0 PV : un cœur en moins, retour au drapeau avec 20 PV.
  • Vérifie « version 11 ».

⏱️ Pas du tour par tour : des minuteurs

Dans un jeu au tour par tour, chacun attend son tour. Ici, tout se passe en même temps, 120 fois par seconde. Comment le monstre sait-il quand frapper ? Il a un minuteur.

  1. Tant que tu es loin, son minuteur est éteint.
  2. Quand tu arrives à moins d'un bloc, il démarre à 0,8 s, et à chaque pas de 1/120 s, il descend.
  3. À 0 : le monstre frappe (3 PV, ou un coup arrêté par le bouclier). Le minuteur repart, entre 1 et 2 s, au hasard : tu ne peux pas deviner exactement quand viendra le prochain coup.
  4. Quand tu le frappes, 3 fois sur 10 il se fâche : son minuteur tombe à 0,3 s. C'est la riposte.

Avec les rayons X, tu vois le minuteur au-dessus du monstre : « coup dans 0,61 s ». À toi de frapper vite !

❤️ Les PV et les cœurs

PV (points de vie)

20 au départ. Les monstres en enlèvent 3 par coup, la potion en rend 10. À 0 PV, tu perds… un cœur.

Cœurs (vies)

5 au départ. Tu en perds un avec les trous, la lave, les murets à pics, ou quand tes PV tombent à 0. Plus de cœur : « Aïe ! ».

Dans beaucoup de jeux, c'est comme ça : les PV sont la santé « de tous les jours », les cœurs (ou vies) sont les « essais ».

🧩 Qui fait quoi dans le code

Tout le combat est dans un nouveau fichier, logique/combat.js (« l'arbitre du combat »). Il ne dessine rien : il décide qui perd des PV. Le peintre dessine ensuite l'armure, l'épée, le monstre et sa barre de PV. Comme toujours, chaque action est annoncée à la radio : « coup d'épée », « riposte », « bouclier arrête le coup », « monstre vaincu »… Regarde le journal !

🔍 Missions d'exploration

  1. Approche un monstre avec les rayons X et regarde son minuteur descendre.
  2. Frappe dans le vide, loin du monstre : que dit le journal ?
  3. Compte combien de fois le monstre riposte pendant un combat.
  4. Surveille « bouclier (coups restants) » dans l'état en direct pendant un combat.
  5. Bois la potion avec tous tes PV : que se passe-t-il ?

❓ Quiz

Combien de coups d'épée pour battre un monstre ?

30 ÷ 5 = 6 coups.

Tu as 20 PV et plus de bouclier. Combien de coups de monstre peux-tu encaisser avant de perdre un cœur ?

20 ÷ 3 = 6,67 : au 7ᵉ coup, tes PV tombent à 0 (20 − 7 × 3 = −1, arrondi à 0).

Pourquoi le monstre attend-il un temps au hasard entre ses coups ?

Pour que tu ne puisses pas deviner le moment exact : c'est plus vivant, et ça ressemble plus à un vrai combat.

⛏️ Étape 12 : 1 000 blocs, fer et pioche ✅ livrée · à valider

Le voyage est trois fois plus long : 1 000 blocs, 10 monstres. Heureusement, du fer t'attend tous les 20 blocs pour réparer ton équipement.

📋 La demande de Maxance

Le fichier complet est dans demandes/12-mille-blocs-fer-pioche.md.

Règles : arrivée au bloc 1 000, tout continue au même rythme. Épée : 20 coups, puis cassée. Fer tous les 20 blocs, posé sur le sol : pioche (F) × 3 = 1 fer. R : 1 fer répare à neuf l'épée ou le bouclier (le plus abîmé).

✅ Ce que tu peux vérifier

  • ☐ « encore 1000 blocs » au départ, en haut à droite.
  • ☐ F trois fois devant un bloc de fer : il se fissure, puis casse ; « fer 1 ».
  • ☐ La barre de l'épée baisse à chaque coup sur un monstre ; à 0, « CASSÉE ! ».
  • ☐ R : l'épée (ou le bouclier) redevient neuve.
  • Vérifie « version 12 ».

🔧 L'usure : un compteur qui descend

L'épée a un compteur : epee = 20. Chaque coup qui touche un monstre fait epee = epee − 1. À 0, le jeu refuse de faire des dégâts. Réparer, c'est juste remettre le compteur à 20. Le bouclier marche pareil, avec 3.

Lequel réparer ? Le jeu compare l'usure des deux, en fraction :

usure de l'épée = 1 − coups restants ÷ 20 · usure du bouclier = 1 − coups restants ÷ 3

Exemple : épée à 5/20 → usure 0,75 ; bouclier à 1/3 → usure 0,67. L'épée est plus abîmée : c'est elle qu'on répare. On compare des fractions et pas des nombres de coups, parce que 5 coups sur 20 et 1 coup sur 3, ça ne se compare pas directement !

📏 1 000 blocs, et un drapeau d'arrivée pas comme les autres

Les drapeaux sont tous les 30 blocs, mais 1 000 n'est pas dans la table de 30 (30 × 33 = 990). Le drapeau d'arrivée n'est donc plus au début d'un tronçon : il est placé pile au bloc 1 000, dans le dernier tronçon, tout plat. Tous les rendez-vous (monstres, lacs, murets, fer) sont calculés avec la même petite fonction : « premier, premier + écart, … jusqu'à dernier ».

Quand deux rendez-vous tombent au même endroit (un fer sur un trou, un muret sur un monstre…), le plus important garde sa place et l'autre se décale, ou saute son tour. Résultat : environ 40 blocs de fer sur 49, et 16 murets sur 20.

🔍 Missions d'exploration

  1. Casse un bloc de fer et trouve le 9 qui disparaît dans « La carte en mémoire ».
  2. Compte combien de monstres tu peux battre avant que ton épée casse.
  3. Abîme ton bouclier et ton épée, puis répare une seule fois : lequel est réparé ? Pourquoi ?
  4. Dans l'état en direct, surveille « épée (coups restants) » et « fer dans le sac ».

❓ Quiz

Combien de monstres peux-tu battre avec une épée neuve ?

20 ÷ 6 = 3,3 : trois monstres, et il restera 2 coups pour le quatrième. Il faut donc du fer !

Épée à 10/20, bouclier à 1/3 : que répare R ?

Usure de l'épée : 0,5 ; du bouclier : 0,67. C'est le bouclier qui est réparé.

Pourquoi le drapeau d'arrivée est-il à la colonne 1002 ?

On part de la colonne 2, et on compte 1 000 blocs : 2 + 1 000 = 1 002.

🐷 Étape 13 : grottes, charbon, cochons et cuisine ✅ livrée · à valider

Sous terre, des grottes de pierre cachent du charbon. En surface, des cochons se promènent. Avec les deux, on cuisine de quoi reprendre des forces !

📋 La demande de Maxance

Le fichier complet est dans demandes/13-grottes-charbon-cochons-cuisine.md.

Règles : 4 grottes à escaliers (environ tous les 200 blocs). Charbon : F × 2. Cochons : 10 PV, 1 viande crue. K cuit (charbon + viande crue), M mange (cuite +8 PV, crue +2). Pioche : 30 coups, réparée avec R.

✅ Ce que tu peux vérifier

  • ☐ Descends un escalier : la caméra te suit sous terre.
  • ☐ F × 2 sur un minerai de charbon : « ⚫ 1 ».
  • ☐ 2 coups d'épée sur un cochon : « 🥩 1 ».
  • ☐ K puis M : +8 PV.
  • ☐ La barre grise de la pioche baisse ; R la répare.
  • Vérifie « version 14 ».

🎥 Une caméra qui descend

Jusqu'ici, la caméra ne bougeait que de gauche à droite (camera.x). Pour les grottes, le monde est devenu plus profond (24 lignes au lieu de 14), et la caméra a gagné un deuxième nombre : camera.y. La règle : « les pieds du héros ne doivent pas descendre plus bas que 440 px sur l'écran ». En surface, camera.y = 0 ; au fond de la grotte, elle vaut 280.

La formule de l'étape 2 devient : x écran = x monde − camera.x, et y écran = y monde − camera.y.

🏗️ Comment on creuse une grotte

Dans un tronçon de 30 colonnes, le cartographe :

  1. remplit le sous-sol de roche (n° 10) ;
  2. creuse un escalier qui descend : à chaque colonne, une marche une ligne plus bas ;
  3. vide une salle de 4 cases de haut, sous un plafond de terre ;
  4. creuse un escalier qui remonte ;
  5. pose 3 minerais de charbon (n° 11) sur le sol de la grotte.

L'ouverture de l'escalier fait 7 blocs : trop large pour un saut, donc on est obligé de descendre.

🐷 Les cochons : une toute petite intelligence

Chaque cochon suit une seule règle : « avance ; si tu es trop loin de chez toi, au bord d'un trou ou devant un mur, fais demi-tour ». Avec juste ça, il a l'air de se promener tout seul ! C'est le début de l'intelligence artificielle des jeux vidéo.

🍳 Une recette

1 charbon + 1 viande crue → 1 viande cuite. Pour le jeu, une recette, c'est juste : « si j'ai tout ce qu'il faut, j'enlève les ingrédients et j'ajoute le résultat ». Sinon, le journal dit ce qui manque.

🔍 Missions d'exploration

  1. Descends dans une grotte et regarde « camera.y » dans les rayons X.
  2. Dans « La carte en mémoire », trouve les 10 (roche) et les 11 (charbon). Les numéros de lignes changent quand tu descends : pourquoi ?
  3. Observe un cochon : quand fait-il demi-tour ?
  4. Appuie sur K sans charbon : que dit le journal ?
  5. Mange de la viande crue, puis de la viande cuite : combien de PV chacune ?

❓ Quiz

Au fond de la grotte, tes pieds sont à y = 720. Combien vaut camera.y ?

720 − 440 = 280.

Combien de charbons dans une partie complète ?

4 grottes × 3 minerais = 12 charbons, donc 12 viandes cuites au maximum.

Pourquoi le monde est-il passé de 14 à 24 lignes ?

Pour avoir de la place sous le sol : la grotte est aux lignes 14 à 17, et son sol à la ligne 18.

🧱 Étape 14 : 100 blocs pour construire ✅ livrée · à valider

Le héros devient bâtisseur : 100 briques dans le sac, un clic de souris pour les poser où on veut (pas trop loin), et la pioche pour les reprendre.

📋 La demande de Maxance

Le fichier complet est dans demandes/14-cent-blocs-pour-construire.md.

Règles : 100 blocs, sac rempli à chaque drapeau (1c). Clic de souris sur une case proche (2c). F reprend une brique (3a). Pas de construction près d'un monstre (4b).

✅ Ce que tu peux vérifier

  • ☐ « 🎒 100 / 100 » en haut à gauche.
  • ☐ Passe la souris sur l'écran : cadre vert = OK, rouge = interdit.
  • ☐ Construis un escalier et monte dessus.
  • ☐ Vise une brique et appuie sur F : elle revient dans le sac.
  • ☐ Près d'un monstre : cadre rouge.
  • ☐ Au drapeau suivant : le sac revient à 100.
  • Vérifie « version 15 ».

🖱️ Du clic à la case

Quand tu cliques, le navigateur donne la position de la souris sur l'écran. Mais le monde est bien plus grand que l'écran ! On fait donc le chemin inverse de l'étape 2 :

  1. x monde = x écran + camera.x (et pareil pour y avec camera.y) ;
  2. colonne = x monde ÷ 40, arrondi vers le bas ; ligne = y monde ÷ 40, arrondi vers le bas.

Exemple : souris à x = 300 sur l'écran, caméra à 3 420 → x monde = 3 720 → colonne 93. Petit piège : l'écran est parfois affiché plus petit (sur un téléphone), alors on remet d'abord la position à l'échelle 960 × 540.

📏 La portée : le théorème de Pythagore

Pour savoir si une case est « proche », on mesure la distance entre le milieu du héros et le milieu de la case : distance = √(dx² + dy²). Si elle dépasse 4 blocs, c'est refusé. Dans les rayons X, le cercle vert en pointillés montre cette portée.

🚦 Le gardien des règles

Avant de poser, le jeu pose des questions, dans l'ordre. Dès qu'une réponse est « non », il s'arrête et le journal dit pourquoi :

  1. Reste-t-il des blocs dans le sac ?
  2. La case est-elle dans le monde, et vide (de l'air) ?
  3. Est-on assez loin d'un monstre vivant (plus de 6 blocs) ?
  4. La case est-elle à portée (4 blocs) ?
  5. Personne n'est dedans (toi, un cochon, un monstre) ?

Le cadre vert ou rouge sous la souris utilise exactement les mêmes questions : c'est pour ça qu'il ne se trompe jamais.

🔍 Missions d'exploration

  1. Dans « L'état en direct », regarde la ligne « case sous la souris » en bougeant la souris.
  2. Active les rayons X (X) près d'un monstre : trouve la zone rouge « construction interdite ».
  3. Pose une brique, puis cherche le 8 dans « La carte en mémoire ».
  4. Dépense 30 blocs, puis passe un drapeau : que dit le journal ?
  5. Essaie de construire un pont au-dessus d'un lac de lave.

❓ Quiz

La caméra est à x = 2 000. Tu cliques à x = 130 sur l'écran. Quelle colonne ?

2 000 + 130 = 2 130, et 2 130 ÷ 40 = 53,25 → colonne 53.

Une case est à 3 blocs à droite et 3 blocs au-dessus du héros. Peux-tu y poser une brique ?

√(3² + 3²) = √18 ≈ 4,2 blocs : c'est plus que 4, donc non !

Pourquoi interdire de construire près d'un monstre ?

Sinon on pourrait construire un pont par-dessus lui et passer sans le combattre.

🔫 Étape 15 : pistolets, hache, épée dorée et armure ✅ livrée · à valider

Une barre d'inventaire en bas de l'écran, 3 pistolets aux balles infinies, une hache qui casse les caisses, une épée dorée, et une vraie armure en fer à fabriquer.

📋 La demande de Maxance

Le fichier complet est dans demandes/15-pistolets-armes-armure.md.

Règles : touches 1 à 9 pour choisir, T pour utiliser (1a). 3 pistolets (2b), balles infinies (3b), tir tout droit (4a). Toutes les armes au départ (5a). La hache casse les caisses (6b). Armure : 5 fers (7c).

✅ Ce que tu peux vérifier

  • ☐ La barre des 9 objets en bas, avec la case choisie en jaune.
  • ☐ 6 puis T devant un monstre : −8 PV.
  • ☐ Le petit pistolet (4) tire plus vite que le gros.
  • ☐ La hache (3) casse une caisse.
  • ☐ Avec 5 fers : 9 puis T, et l'armure grise apparaît.
  • Vérifie « version 16 ».

🧰 Un catalogue d'armes

Chaque arme est une petite fiche dans config.js : son nom, ses dégâts, son usure et son attente. Le jeu n'a pas une règle par arme : il a une seule règle (« enlève les dégâts de l'arme en main ») qui lit la fiche. Pour inventer une nouvelle arme, il suffit d'ajouter une fiche !

ArmeDégâtsAttenteUsure
Épée50 s20 coups
Épée dorée70 s40 coups
Petite hache80,8 s30 coups
Petit pistolet20,25 sjamais
Pistolet moyen40,6 sjamais
Gros pistolet81,2 sjamais

⏳ L'attente : un compte à rebours

Après chaque coup ou tir, un nombre (attente) se met à 0,25, 0,6 ou 1,2. À chaque pas de temps, on lui enlève 1/120 de seconde. Tant qu'il n'est pas à 0, T ne fait rien et le journal dit « pas encore prêt ». C'est comme ça que des balles infinies ne deviennent pas une mitraillette !

💨 La vie d'une balle

  1. Naissance : elle apparaît au bout du canon, avec une vitesse de 700 px/s.
  2. À chaque pas : x = x + 700 × 1/120, soit environ 6 px.
  3. Mort : elle touche un monstre ou un cochon (dégâts), un bloc solide, ou elle a fait 10 blocs.

C'est exactement comme les flammes de l'étape 7 : des petits objets qui naissent, bougent et disparaissent.

🦺 L'armure : une soustraction

Un monstre frappe 3 PV. Avec l'armure : 3 − 2 = 1 PV seulement. À chaque coup, l'armure s'use (20 coups). Le bouclier passe avant : il arrête les 3 premiers coups tout seul.

🔍 Missions d'exploration

  1. Active les rayons X (X) avec un pistolet en main : trouve la ligne de portée, puis tire et regarde la balle avancer (pause, puis N).
  2. Tire au gros pistolet, puis appuie tout de suite encore sur T : que dit le journal ?
  3. Combien de coups d'épée dorée faut-il pour vaincre un monstre de 30 PV ? Et au gros pistolet ?
  4. Casse 5 fers, fabrique l'armure, et compare « PV » avant et après un coup de monstre.
  5. Dans l'état en direct, regarde « attente avant le prochain coup » descendre.

❓ Quiz

Combien de balles du petit pistolet pour vaincre un monstre de 30 PV ?

30 ÷ 2 = 15 balles, soit au moins 15 × 0,25 = 3,75 secondes.

Qui tape le plus fort en 10 secondes : la hache ou l'épée dorée ?

La hache : un coup à 0 s, 0,8 s, 1,6 s… jusqu'à 9,6 s, donc 13 coups et 104 dégâts. L'épée dorée n'a pas d'attente : tout dépend de la vitesse de ton doigt !

Avec l'armure, combien de coups de monstre pour perdre 20 PV ?

3 coups arrêtés par le bouclier, puis 20 coups à 1 PV : 23 coups. Sans rien : 7 coups (3 × 7 = 21).

🎵 Étape 16 : musique et bruitages ✅ livrée · à valider

Le jeu n'est plus muet ! Une petite musique rétro, des pas qui font « chhh » sur l'herbe et « toc » sur le bois, un « boom, bring » au saut… et aucun fichier de son : tout est fabriqué avec des nombres.

📋 La demande de Maxance

Le fichier complet est dans demandes/16-musique-et-bruitages.md.

Règles : musique rétro joyeuse (1a). Pas sur l'herbe, le bois et la pierre (2b). « Boom » au saut, « bring » à l'atterrissage (3a). Tir, épée, monstre touché, lave (4abcd). J pour la musique, B pour les bruits (5b).

✅ Ce que tu peux vérifier

  • ☐ Une musique démarre avec la partie.
  • ☐ Cours sur l'herbe, puis sur une planche : deux bruits différents.
  • ☐ Saute : « boom »… puis « bring ».
  • ☐ Tire, frappe, touche un monstre, tombe dans la lave.
  • ☐ J coupe la musique, B coupe les bruits.
  • Vérifie « version 17 ».

〰️ Un son, c'est de l'air qui vibre

Le haut-parleur pousse l'air très vite, en avant, en arrière… Le nombre d'allers-retours par seconde, c'est la fréquence, en hertz (Hz). 440 Hz, c'est la note La. Plus la fréquence est grande, plus le son est aigu. Et la forme de la vibration change le « goût » du son :

sine : doux (le « boom ») triangle : flûte (la basse) carré : vieux jeu vidéo

Et le bruit, ce sont des vibrations au hasard : « chhh ». En gardant seulement les graves ou les aigus (un filtre), on obtient l'herbe, le tir ou la lave qui grésille.

📈 L'enveloppe : « toc » ou « bong » ?

Chaque son a une enveloppe : le volume monte très vite (l'attaque), puis redescend jusqu'au silence. Si ça redescend en 0,04 s, ça fait « toc » (un pas). En 0,8 s, ça fait « pschhh » (la lave). Et si la fréquence glisse de 160 Hz à 55 Hz pendant le son, ça fait « boom » !

🎼 La musique : une partition et un séquenceur

La musique est une liste de notes (8 mesures de 4 temps) : quelle note, à quel temps, pendant combien de temps. Chaque note a un numéro (60 = Do, 69 = La) et on calcule sa fréquence : 440 × 2(numéro − 69) ÷ 12. Monter de 12 numéros, c'est monter d'une octave : la fréquence double. Toutes les 0,1 s, le séquenceur prépare les notes des 0,3 secondes suivantes, pour que la musique ne boite jamais.

👂 Qui décide des sons ?

L'orchestre (affichage/sons.js) écoute les événements du jeu, comme le journal : « saut » → boom, « tir » → pan… Pour les pas, il regarde le bloc sous les pieds du héros (le même nombre que dans « La carte en mémoire ») et choisit herbe, bois ou pierre.

🔍 Missions d'exploration

  1. Dans l'état en direct, regarde « sous les pieds » et « dernier bruit » pendant que tu cours.
  2. Regarde « musique » : sur quelle mesure est-on ? Combien y en a-t-il ?
  3. Coupe la musique (J) : que dit le journal ?
  4. Cours sur tes propres briques : quel bruit font-elles ?
  5. Dans config.js, trouve le tempo et la fréquence des pas.

❓ Quiz

La note n° 81 : quelle fréquence ?

81 = 69 + 12 : une octave au-dessus du La, donc 440 × 2 = 880 Hz.

À 132 temps par minute, combien dure un tour de musique (32 temps) ?

Un temps = 60 ÷ 132 ≈ 0,45 s, donc 32 × 0,45 ≈ 14,5 secondes.

Pourquoi le son ne marche-t-il qu'après avoir appuyé sur une touche ?

Les navigateurs interdisent aux pages de faire du bruit toutes seules : il faut d'abord un geste du joueur (une touche ou un clic).

⛏️ Étape 17 : pelle, casser les blocs et mitrailleuse ✅ livrée · à valider

On creuse ! La pelle, la hache et la pioche cassent les blocs d'un clic de souris, et chaque bloc cassé va dans le sac. Et une mitrailleuse, mais avec des balles comptées.

📋 La demande de Maxance

Le fichier complet est dans demandes/17-pelle-casser-mitrailleuse.md.

Règles : la pioche casse tout ce qui est solide, sauf le fond du monde (1a). Le bon outil casse en 1 clic, la pioche en 3 clics sinon (2a). Bloc cassé → sac (3b). Outil = casser, briques = poser (4a). 11 cases : 0 pelle, ° mitrailleuse (5a). Rafale de 10 balles/s, 1 PV (6a). Butin : 1 chance sur 2, de 10 à 25 balles (7a).

✅ Ce que tu peux vérifier

  • ☐ 0 + clic sur l'herbe : cassée, 🎒 +1.
  • ☐ 3 + clic sur une planche : cassée.
  • ☐ 7 + 3 clics sur la terre : 1, 2 fissures… cassée !
  • ☐ Le fond du monde ne se casse pas.
  • ☐ ° + T tenue : ta-ta-ta-ta !
  • Vérifie « version 18 ».

🧰 Le bon outil pour le bon bloc

Outil1 clic3 clics
🪏 Pelle (0)herbe, terre—
🪓 Hache (3)bois, planche—
⛏️ Pioche (7)pierre, roche, briquetout le reste de solide

Le jeu ne connaît pas les outils un par un : il lit une petite liste dans config.js (« la pelle casse facilement : herbe, terre »). C'est la même idée que le catalogue d'armes de l'étape 15.

🧠 Le jeu se souvient du bloc que tu tapes

Pour les blocs à 3 clics, le monde garde une petite fiche : cassage = { colonne, ligne, clics, besoin }. À chaque clic sur le même bloc, clics augmente (et une fissure apparaît). Si tu cliques sur un autre bloc, la fiche recommence à zéro. Quand clics atteint besoin, on écrit 0 (l'air) dans la grille… et le bloc disparaît.

🎲 Le butin : le hasard et les compteurs

La mitrailleuse a un compteur de balles : −1 à chaque tir. À 0, clic, plus rien ! Quand un monstre est vaincu, le jeu tire un nombre au hasard entre 0 et 1 : s'il est plus petit que 0,5 (1 chance sur 2), il tire un deuxième nombre entre 10 et 25… et c'est ton butin.

🔍 Missions d'exploration

  1. Creuse un puits jusqu'au fond du monde. Regarde « La carte en mémoire » : les cases deviennent des 0.
  2. Dans l'état en direct, regarde « bloc en train d'être cassé » pendant tes 3 clics de pioche.
  3. Clique 2 fois sur un bloc, puis 1 fois sur un autre, puis reviens : combien de clics faut-il encore ?
  4. Garde T appuyée 2 secondes avec la mitrailleuse : combien de balles as-tu tirées ?
  5. Bats 4 monstres et note le butin de chacun dans le journal.

❓ Quiz

Combien de secondes dure une rafale de 50 balles ?

10 balles par seconde : 50 ÷ 10 = 5 secondes.

Combien de balles de mitrailleuse pour vaincre un monstre de 30 PV ?

1 PV par balle : 30 balles (3 secondes de rafale).

Tu casses 12 blocs de terre avec la pelle. Combien de blocs gagnes-tu dans le sac ?

12 : chaque bloc cassé devient une brique à reposer.

🥁 Étape 18 : un cri dans les trous et une batterie sur les murets ✅ livrée · à valider

Deux nouveaux bruitages rigolos : le héros crie de surprise quand il tombe dans un trou, et le squelette danse sur un vrai rythme de batterie.

📋 La demande de Maxance

Le fichier complet est dans demandes/18-cri-et-batterie.md.

Un petit cri de surprise dans les trous. Sur le muret à pics, une musique « batterie » : tac-tac-tac-tac-tac, fort mais rigolo.

✅ Ce que tu peux vérifier

  • ☐ Tombe dans un trou : « ouh-OUH-oh ? »
  • ☐ Touche un muret à pics : tac-tac-tac-tac-TAC, boum-tchak, pschiii !
  • ☐ B coupe aussi ces bruits.

🗣️ Un cri, c'est une fréquence qui monte puis descend

Le cri est fait de deux notes collées : la première glisse de 330 Hz à 880 Hz (la voix monte, « ouh-OUH »), la seconde redescend de 880 Hz à 420 Hz (« oh ? »). C'est la même astuce que le « boom » du saut, mais dans l'autre sens.

🥁 Une batterie avec seulement 3 sons

  • La grosse caisse (boum) : une note douce qui tombe très vite de 150 Hz à 45 Hz.
  • La caisse claire (tac) : un petit morceau de bruit aigu, très court.
  • La cymbale (pschiii) : du bruit très aigu qui dure presque une seconde.

Toutes les frappes sont préparées d'avance, chacune avec son heure exacte : 5 « tac » espacés de 0,09 s, puis un coup tous les quarts de seconde. C'est l'orchestre qui écoute l'événement « piege » du journal.

❓ Quiz

Les 5 « tac » sont espacés de 0,09 s. Combien de temps dure le « tac-tac-tac-tac-tac » ?

Du 1er au 5e coup : 4 × 0,09 = 0,36 s. C'est très rapide !

Quel événement du journal déclenche le cri ?

« bras-leves » : le moment où le héros lève les bras en tombant dans un trou (étape 8).

🚀 Étape 19 : le Magnum et le bazooka ✅ livrée · à valider

Un Magnum qui recule quand il tire (le héros gesticule et l'écran tremble), et un bazooka qui tire des roquettes explosives. Pour recharger le bazooka, il faut miner de la pierre.

📋 La demande de Maxance

Le fichier complet est dans demandes/19-magnum-et-bazooka.md.

Règles : Magnum 15 dégâts, 1 tir/s (1a). Recul + petit tremblement (2a). Roquette : 20 dégâts, casse 3 × 3 blocs (3a). 10 pierres minées = 1 roquette (4a). Touches = et ² (5c).

✅ Ce que tu peux vérifier

  • ☐ = puis T : BANG, recul, l'écran tremble.
  • ☐ Le monstre perd 15 PV.
  • ☐ ² puis T : fshhh… BOUM !
  • ☐ Contre un mur de pierre : un trou de 3 × 3.
  • ☐ 10 pierres minées : « une roquette fabriquée ! »
  • Vérifie « version 19 ».

🔙 Le recul : action et réaction

Quand une arme pousse une balle très fort vers l'avant, la balle pousse l'arme vers l'arrière : c'est le recul. Dans le jeu, le héros recule de 8 px, sans traverser les murs, grâce à la même règle de collision que pour marcher. Pendant 0,35 s, le dessin du héros se penche et son bras remonte, puis tout revient en place.

Le tremblement de l'écran ne change pas le monde : c'est seulement le peintre qui décale un peu son dessin (quelques pixels, en suivant un sinus). La caméra, elle, ne bouge pas.

💥 L'explosion : une zone de 3 × 3

La roquette avance comme une balle, mais plus lentement. Quand elle touche quelque chose (ou après 12 blocs), le jeu :

  1. trouve la case de l'impact (colonne, ligne) ;
  2. dessine autour un carré de 3 × 3 cases : c'est la zone d'explosion ;
  3. blesse chaque monstre et chaque cochon qui touche la zone (20 PV) ;
  4. écrit 0 (l'air) dans chaque case solide de la zone… sauf la dernière ligne du monde, et sauf si un monstre vivant est tout près ;
  5. lance 24 flammes dans toutes les directions (les particules de l'étape 7 !).

🔍 Missions d'exploration

  1. Active les rayons X (X), tire une roquette et mets en pause (Échap) : trouve le carré orange de la zone d'explosion.
  2. Tire au Magnum et regarde « recul du Magnum » dans l'état en direct.
  3. Mine de la pierre dans une grotte et regarde « pierres minées » monter jusqu'à 10.
  4. Tire une roquette dans la terre : combien de blocs sont cassés ? Et contre le fond du monde ?

❓ Quiz

Combien de tirs de Magnum pour vaincre un monstre de 30 PV ? Combien de roquettes ?

Magnum : 30 ÷ 15 = 2 tirs. Roquettes : 20 PV chacune, donc 2 roquettes (la 2e finit le travail).

Combien de cases au maximum une explosion peut-elle casser ?

3 × 3 = 9 cases.

Tu as 0 roquette. Combien de blocs de pierre dois-tu miner pour en avoir 3 ?

3 × 10 = 30 blocs de pierre (ou de roche).

🖱️ Étape 20 : cliquer sur la barre pour choisir ✅ livrée · à valider

Plus besoin de chercher la bonne touche : un clic sur une case de la barre, et l'objet est dans la main du héros.

📋 La demande de Maxance

Le fichier complet est dans demandes/20-cliquer-sur-la-barre.md.

« Je clique sur le Magnum et je l'ai dans la main. »

✅ Ce que tu peux vérifier

  • ☐ La souris sur une case : elle s'éclaire, et son nom s'affiche.
  • ☐ Un clic : l'objet est dans la main.
  • ☐ Avec la pelle, un clic sur la barre ne casse rien.
  • Vérifie « version 20 ».

🎯 Sur quelle case ai-je cliqué ?

Chaque case de la barre est un rectangle : x, y, largeur (46 px), hauteur (46 px). Quand tu cliques, le jeu regarde si la souris est dedans : x plus grand que le bord gauche ET plus petit que le bord droit, et pareil en hauteur. C'est exactement la même idée que les collisions de l'étape 1 (« est-ce que deux rectangles se touchent ? »), avec un tout petit rectangle : la pointe de la souris.

Le peintre et le jeu utilisent la même fonction (caseDeLaBarre) pour connaître la place des cases : comme ça, on clique toujours exactement là où c'est dessiné.

❓ Quiz

La barre commence à x = 145, chaque case fait 46 px, avec 6 px d'écart. Où commence la case n° 3 ?

La case 1 commence à 145, la case 2 à 145 + 52 = 197, la case 3 à 197 + 52 = 249.

Pourquoi un clic sur la barre ne casse-t-il pas le bloc derrière ?

Parce que le jeu regarde d'abord si la souris est sur la barre. Si oui, il choisit l'objet et s'arrête là.

🔄 Étape 21 : mitrailleuse infinie et rechargement du bazooka ✅ livrée · à valider

La mitrailleuse ne s'arrête plus jamais, et le héros recharge son bazooka avec une roquette prise dans son dos.

📋 La demande de Maxance

Le fichier complet est dans demandes/21-mitrailleuse-infinie-rechargement.md.

Mitrailleuse infinie. Bazooka : après chaque tir, le héros bouge le bras, prend une roquette cachée dans son dos, et recharge.

✅ Ce que tu peux vérifier

  • ☐ ) puis T tenu : ta-ta-ta… sans fin.
  • ☐ ² puis T : le bras va dans le dos, revient avec une roquette, clic-clac !
  • Vérifie « version 21 ».

🎞️ Une animation en 3 temps

Le rechargement dure 1,2 s. Le jeu calcule un nombre k qui va de 0 (début) à 1 (fin), et place la main du héros selon k :

  1. de 0 à 0,35 : la main va de devant jusque dans le dos ;
  2. de 0,35 à 0,75 : elle revient avec une roquette jusqu'au bout du tube ;
  3. de 0,75 à 1 : elle pousse la roquette dedans.

Pour trouver un point entre deux points, on fait « départ + (arrivée − départ) × t ». C'est une interpolation : c'est comme ça que presque toutes les animations des jeux vidéo sont faites.

🐞 Un petit bug d'arrondi

La mitrailleuse tirait 47 balles en 5 s au lieu de 50. Pourquoi ? Pour un ordinateur, 0,1 − 12 × (1/120) ne fait pas exactement 0, mais 0,0000000000001 ! Alors il attendait un pas de plus avant chaque tir. La réparation : en dessous de 0,000001, on arrondit à 0.

❓ Quiz

La main va de x = 30 à x = −8. Où est-elle à t = 0,5 ?

30 + (−8 − 30) × 0,5 = 30 − 19 = 11.

Combien de balles la mitrailleuse tire-t-elle en 1 minute ?

10 par seconde × 60 = 600 balles.

🎯 Étape 22 : cinq nouvelles armes à feu ✅ livrée · à valider

Fusil à pompe, fusil de sniper, pistolet laser, lance-flammes et pistolet à eau : chacun a son dessin, son éclair, son bruit, ses douilles et son rechargement.

📋 La demande de Maxance

Le fichier complet est dans demandes/22-cinq-armes-a-feu.md.

Règles : 5 armes (1abcde), balles infinies (2a), on clique sur la barre pour les prendre (3b), et du style : dessin, éclair, bruit, douilles, rechargement (4abc).

✅ Ce que tu peux vérifier

  • ☐ Clique sur les 5 dernières cases de la barre.
  • ☐ Pompe : 5 plombs. Sniper : laser rouge. Laser : rayon bleu.
  • ☐ Lance-flammes : ça brûle ! Eau : le monstre recule, sans blessure.
  • ☐ Les douilles sautent et rebondissent.
  • ☐ Magnum, sniper, pompe : le héros recharge entre deux tirs (⟳), sans jamais s'arrêter.
  • Vérifie « version 22 ».

🧰 Le catalogue des armes à feu

ArmeDégâtsPortéeCe qu'elle a de spécial
Fusil à pompe5 × 35 blocs5 plombs en éventail
Fusil de sniper2525 blocslaser rouge de visée, balle très rapide
Pistolet laser615 blocstouche tout de suite, pas de balle
Lance-flammes1 par 0,1 s3 blocstant que tu tiens T
Pistolet à eau08 blocspousse le monstre, gouttes qui retombent

📐 L'éventail du fusil à pompe

Jusqu'ici, les balles allaient tout droit : seulement une vitesse horizontale vx. Maintenant elles ont aussi une vitesse verticale vy. Les 5 plombs partent avec 5 angles différents (−0,22 ; −0,11 ; 0 ; 0,11 ; 0,22 radian) : vx = vitesse × cos(angle), vy = vitesse × sin(angle). Plus on est loin, plus les plombs s'écartent… c'est pour ça qu'il faut tirer de près !

⚡ Le laser : chercher sur une ligne

Le laser n'envoie pas de balle. Le jeu avance sur la ligne de tir, 4 pixels par 4 pixels, et s'arrête à la première chose qu'il trouve : un monstre, un cochon ou un bloc solide. C'est le lancer de rayon. Le laser rouge du sniper utilise exactement la même méthode, mais juste pour le dessin.

💧 Les gouttes retombent : la gravité

Les gouttes du pistolet à eau ont une gravité : à chaque pas, vy augmente un peu, alors elles font une courbe, comme le héros quand il saute. Les douilles aussi tombent, et elles rebondissent : quand elles touchent un bloc, vy change de signe et perd 65 % de sa force.

🔁 Le rechargement, juste pour le style (corrigé à l'étape 23)

D'abord, Claude avait mis un chargeur à chaque arme : à 0, il fallait s'arrêter pour recharger. Mais Maxance voulait des balles vraiment infinies ! Maintenant, il n'y a plus de chargeur. Les armes lentes (Magnum, sniper, pompe, gros pistolet) font leur animation de rechargement pendant l'attente normale entre deux tirs : la main va à la ceinture et revient, mais ça ne ralentit jamais le tir.

🔍 Missions d'exploration

  1. Tire au fusil à pompe de loin, puis de près : combien de PV perd le monstre à chaque fois ?
  2. Regarde « chargeur de l'arme en main » dans l'état en direct pendant que tu tires.
  3. Arrose un monstre plusieurs fois : jusqu'où recule-t-il ?
  4. Mets le jeu en pause juste après un tir de laser : trouve le rayon bleu.
  5. Compte les douilles quand tu recharges le Magnum.

❓ Quiz

Combien de tirs de sniper pour un monstre de 30 PV ?

2 tirs : 25 + 25 = 50, c'est plus que 30.

Combien de temps de flammes pour vaincre un monstre de 30 PV ?

1 PV toutes les 0,1 s = 10 PV par seconde, donc 3 secondes.

Si les 5 plombs touchent, combien de dégâts fait le fusil à pompe ?

5 × 3 = 15 PV, comme le Magnum !

🧍 Étape 24 : un héros de 2 blocs de haut ✅ livrée · à valider

Le héros grandit : 2 blocs de haut, plus large, il saute plus haut et il peut se baisser. Ses armes grandissent avec lui. Et le bazooka ne manque plus jamais de roquettes.

📋 La demande de Maxance

Le fichier complet est dans demandes/24-heros-de-deux-blocs.md.

Règles : tout agrandi (1b), saut plus haut (2b), se baisser avec S (3b), armes à la bonne taille, tir illimité pour toutes les armes.

✅ Ce que tu peux vérifier

  • ☐ Le héros fait 2 blocs de haut.
  • ☐ Il marche par-dessus un trou d'un bloc.
  • ☐ S : il se baisse et passe sous un bloc.
  • ☐ Sous un plafond, il reste baissé.
  • ☐ Le bazooka tire sans fin.
  • Vérifie « version 24 ».

🔍 Agrandir un dessin : une échelle

Le dessin du héros a été fait pour 46 px de haut. Pour qu'il mesure 80 px, on ne redessine rien : on dit au peintre « dessine tout 80 ÷ 46 ≈ 1,74 fois plus grand » (ctx.scale). Quand il se baisse, on l'écrase seulement en hauteur : 38 ÷ 46 ≈ 0,83. Les armes, elles, sont agrandies un peu moins (× 0,85), pour ne pas être énormes.

📏 Tout ce que la taille change

  • Les trous : 52 px de large, c'est plus qu'un bloc (40 px). Il ne tombe plus dans un trou d'un bloc : ses pieds touchent les deux bords.
  • Le saut : la force du saut passe de 860 à 930. Comme la gravité ne change pas, il monte de 180 px environ (4,4 blocs).
  • Les plafonds : un passage d'un bloc de haut (40 px) est trop bas pour 80 px. Baissé (38 px), ça passe !
  • La main : les balles partent de la main du héros, au milieu de son corps : y + hauteur × 0,5. Comme ça, elles partent du bon endroit qu'il soit debout ou baissé.

🧎 Se relever : vérifier la place

Pour se relever, le héros a besoin de 42 px de plus au-dessus de sa tête. Le jeu regarde toutes les cases de la grille à cet endroit : s'il y a un bloc solide, il reste baissé, et le journal le dit.

❓ Quiz

Le héros fait 52 px de large. Tombe-t-il dans un trou de 2 blocs ?

Oui : 2 blocs = 80 px, c'est plus que 52 px.

Le héros saute de 4,4 blocs. Combien de briques pour monter sur une plateforme à 5 blocs ?

Une seule : 1 + 4,4 = 5,4 blocs, c'est plus que 5.

🐉 Étape 25 : des dragons, des grottes à conquérir, miner avec T ✅ livrée · à valider

Tous les 100 blocs, un dragon mutant de 500 PV garde le passage. Les petits monstres se cachent dans les grottes : bats-les, et la grotte est à toi. Et pour miner, il suffit d'appuyer sur T.

📋 La demande de Maxance

Le fichier complet est dans demandes/25-dragons-grottes-miner-avec-t.md.

Règles : boss de 500 PV, coups de griffes de 8 PV, lent, il garde le passage, un coffre en récompense (1a à 4a). 2 monstres par grotte, grotte conquise = drapeau à ton nom (5a, 6a). Miner avec T : la souris, sinon sous les pieds (baissé), sinon devant (7).

✅ Ce que tu peux vérifier

  • ☐ Au bloc 100 : le dragon attend… puis s'approche quand tu es à 10 blocs.
  • ☐ Ses griffes : −8 PV. Il t'empêche de passer.
  • ☐ Vaincu : un coffre. Touche-le : +1 potion, +5 fers.
  • ☐ Grotte : 2 monstres s'approchent. Bats-les : ton drapeau !
  • ☐ Outil en main : T casse le bloc devant toi.
  • Vérifie « version 25 ».

👀 La zone de vue : « il m'a vu ! »

Chaque monstre a une zone de vue : 10 blocs pour le dragon, 6 pour les monstres des grottes. À chaque pas de temps, le jeu mesure l'écart entre le héros et le monstre. S'il est plus petit que la zone de vue, le monstre marche vers le héros. Sinon, il attend. Dans les rayons X (X), la zone de vue est un rectangle violet, qui devient rouge quand il t'a vu.

🦮 La laisse : il ne va pas partout

Un monstre ne s'éloigne jamais trop de sa place : c'est sa laisse (12 blocs pour le dragon, 5 pour les monstres des grottes). Et avant chaque pas, il vérifie qu'il y a du sol devant lui et pas de mur : les monstres ne tombent pas dans les trous !

🧠 Une petite intelligence artificielle

Le cerveau d'un monstre, c'est juste 3 questions posées 120 fois par seconde :

  1. Est-ce que je vois le héros ? → Si oui, je m'approche.
  2. Est-ce que je le touche ? → Si oui, mon minuteur descend.
  3. Mon minuteur est à 0 ? → Je frappe, et le minuteur recommence.

C'est la même idée que les cochons (étape 13), avec une question en plus.

🏴 La grotte conquise : un nouveau point de retour

Quand le dernier monstre d'une grotte est vaincu, le jeu plante ton drapeau au milieu de la salle et se souvient de cet endroit (retourGrotte). Si tu perds une vie, tu réapparais là, sur le sol de la grotte, et plus au dernier drapeau. Dès que tu atteins un nouveau drapeau, c'est lui qui redevient ton point de retour.

⛏️ Miner avec T : 3 règles dans l'ordre

  1. La souris vise un bloc solide à portée ? → C'est lui.
  2. Sinon, tu es baissé (S) ? → Le bloc sous tes pieds (pour creuser vers le bas).
  3. Sinon → le bloc juste devant toi.

🔍 Missions d'exploration

  1. Approche-toi du dragon bloc par bloc : à combien de blocs se met-il à bouger ? Vérifie dans les rayons X.
  2. Combien de tirs de sniper (25 dégâts) pour vaincre un dragon ? Et de roquettes (20) ?
  3. Regarde « point de retour » dans l'état en direct avant et après avoir conquis une grotte.
  4. Creuse un puits : baisse-toi avec S, prends la pioche et appuie sur T.

❓ Quiz

Combien de coups de Magnum (15 dégâts) pour vaincre un dragon de 500 PV ?

500 ÷ 15 = 33,3… donc 34 coups.

Tu as 20 PV et pas de bouclier. Combien de coups de griffes peux-tu encaisser ?

8 + 8 = 16, le 3ᵉ coup fait passer à 0 : tu tiens 2 coups. Avec l'armure (−2 par coup), chaque coup n'enlève que 6 PV : tu en tiens 3.

📷 Étape 26 : la caméra qui monte ✅ livrée · à valider

Quand tu grimpes sur tes blocs, la caméra monte avec toi. Tu ne sors plus jamais de l'écran par le haut.

📋 La demande de Maxance

Le fichier complet est dans demandes/26-camera-qui-monte.md.

« Quand je monte sur les blocs, je veux que la caméra me suive. »

✅ Ce que tu peux vérifier

  • ☐ Construis une grande tour et monte dessus : la caméra monte.
  • ☐ Saute du haut : elle suit encore.
  • ☐ Redescends : elle revient à sa place.
  • Vérifie « version 26 ».

🖼️ Deux lignes invisibles

La caméra garde le héros entre deux lignes de l'écran : sa tête ne monte pas plus haut que 250 px, et ses pieds ne descendent pas plus bas que 440 px. S'il dépasse une ligne, la caméra bouge juste assez pour le remettre dedans. Entre les deux, elle revient doucement à sa place (camera.y = 0). Active les rayons X (X) pour voir ces deux lignes en pointillés verts.

Quand la caméra monte au-dessus du monde, camera.y devient négatif : on regarde plus haut que la ligne 0. C'est la même formule qu'à l'étape 13 : y écran = y monde − camera.y.

❓ Quiz

La tête du héros est à y = 100 dans le monde. Combien vaut camera.y ?

La tête doit être à 250 px sur l'écran : 100 − camera.y = 250, donc camera.y = −150.

🧱 Étape 27 : un monde sur mesure, et tirer à couvert ✅ livrée · à valider

Le monde a été réglé pour le héros de 2 blocs. Et caché derrière un bloc, le héros lève son arme par-dessus pour tirer, pendant que les monstres ne peuvent pas le toucher.

📋 La demande de Maxance

Le fichier complet est dans demandes/27-monde-sur-mesure-et-couverture.md.

« Tout le monde fait sur mesure pour la taille du personnage. Caché derrière un bloc, je peux tirer, le pistolet passe au-dessus. »

✅ Ce que tu peux vérifier

  • ☐ Plus de trou ni de mare de lave d'un seul bloc.
  • ☐ Tu passes debout sous les plateformes.
  • ☐ Pose une brique, baisse-toi derrière (S) et tire.
  • ☐ Caché, le monstre ne te touche pas.
  • Vérifie « version 27 ».

📐 Des mesures qui vont ensemble

Le héros…donc le monde…
fait 52 px de large (plus qu'un bloc)trous et mares de lave de 2 ou 3 blocs
fait 80 px de haut (2 blocs)plateformes à 3 ou 4 blocs du sol : on passe dessous
saute de 4,4 blocsplateformes à 4 blocs au plus : on saute dessus
affronte un dragon de 3 blocs de large6 blocs plats devant lui, 2 derrière

Tous ces nombres sont dans config.js. Changer la taille d'un personnage, c'est vérifier toutes les règles qui en dépendent : les game designers appellent ça « les métriques du niveau ».

🔫 Tirer par-dessus un bloc

Avant chaque tir, le jeu regarde la case juste devant le héros, à la hauteur de sa main. Si c'est un bloc solide et qu'il y a de l'air juste au-dessus, le tir part 6 px au-dessus du bloc, et le héros lève le bras. Dans l'état en direct, regarde « arme levée par-dessus un bloc ».

🛡️ Caché : les coups ne passent pas

Avant de frapper, un monstre vérifie maintenant s'il y a un bloc solide entre lui et le héros, à la hauteur de leurs deux corps. Si oui, le héros est à couvert : le coup ne part pas.

❓ Quiz

Le héros baissé mesure 38 px, un bloc 40 px. Dépasse-t-il de sa cachette ?

Non : 38 est plus petit que 40, il est entièrement caché. Mais son bras, lui, passe au-dessus pour tirer !

🌳 Étape 28 : des arbres, des portes et des escaliers ✅ livrée · à valider

Des arbres poussent le long du chemin. Coupe-les à la hache pour avoir du bois, et fabrique des portes et des escaliers. Et maintenant, tu peux construire où tu veux, aussi haut que tu veux !

📋 La demande de Maxance

Le fichier complet est dans demandes/28-arbres-portes-escaliers.md.

Règles : arbres au tronc solide (1a), 1 bloc de tronc = 1 bois (2a), porte 4 bois et escalier 2 bois (3a), porte qui s'ouvre pour toi et pas pour les monstres (4a), escalier qu'on monte en marchant (5a). Plus de limite pour construire. Le petit pistolet est parti. Le cochon danse.

✅ Ce que tu peux vérifier

  • ☐ Coupe un arbre à la hache (3 + T) : 🪵 +1 par bloc.
  • ☐ 4 : pose une porte, traverse-la.
  • ☐ Dernière case : pose un escalier, monte sans sauter.
  • ☐ Construis une tour qui dépasse le haut du monde.
  • ☐ Un cochon vaincu danse !
  • Vérifie « version 28 ».

🌲 Un arbre, ce sont des cases

Un arbre, c'est juste des numéros dans la grille : 12 pour le tronc (solide) et 13 pour les feuilles (pas solides). Le jeu se souvient de chaque arbre (sa colonne et ses feuilles) : quand la dernière case de tronc est coupée, il écrit 0 (l'air) à la place de toutes ses feuilles.

🚪 Une porte qui choisit qui passe

Une porte est solide… sauf pour le héros ! Le jeu a maintenant deux questions : « est-ce solide ? » (pour les monstres et les balles) et « est-ce solide pour le héros ? ». Pour la seconde, une porte répond non. Le peintre la dessine ouverte quand le héros la touche.

🪜 Monter une marche sans sauter

Quand le héros marche, le jeu regarde la case juste devant ses pieds. Si c'est une marche d'escalier et qu'il y a de la place au-dessus, il pose le héros dessus : y = haut de la marche − sa taille. C'est aussi simple que ça !

⬆️ Construire sans limite, au-dessus du monde

Plus aucune limite : les briques sont illimitées, on pose à n'importe quelle distance, et même près d'un dragon. La grille avait 24 lignes, de 0 à 23. Pour construire plus haut, on utilise des lignes négatives : −1, −2, −3… Une case jamais remplie, c'est de l'air. Et la caméra n'a plus de limite vers le haut.

🐷 La danse du cochon

Quand un cochon est vaincu, il reste encore 1,5 seconde dans le monde avec un compte à rebours (danseMort). Pendant ce temps, le peintre le dessine debout, en faisant bouger ses pattes avant avec un sinus (comme les ailes du dragon), puis il le rend de plus en plus transparent.

🥁 Silence pour la batterie

Sur un muret à pics, la musique Game Boy se tait pendant que le squelette danse : on n'entend que le « tac-tac-tac-tac-TAC » et la batterie. Pour l'orchestre, c'est juste une condition de plus : « je joue la musique seulement si le squelette ne danse pas ».

❓ Quiz

Tu coupes un arbre de 5 blocs. Combien de portes peux-tu fabriquer ?

5 bois ÷ 4 = 1 porte (et il reste 1 bois). Ou 2 escaliers (4 bois).

Pourquoi les monstres ne passent-ils pas la porte ?

Pour eux, la porte est solide : c'est un mur. Seule la règle du héros dit « la porte n'est pas solide ».

📏 Étape 29 : le monde à ta taille ✅ livrée · à valider

Ton héros mesure 2 blocs : maintenant, le monde aussi a grandi ! Caisses, tours, murets, cochons, monstres et arbres sont à sa taille. Tu as aussi une loupe (V), un son qui se tait quand tu regardes ailleurs, un son au ralenti, et la touche Entrée pour poser un bloc en sautant.

📋 La demande de Maxance

Le fichier complet est dans demandes/29-monde-a-ta-taille.md.

Règles : toutes les options !

  • 1a : les choses et les créatures grandissent.
  • 1b : un zoom avec V.
  • 1c : le décor grandit.
  • 2a + 2b : le muret de 2 blocs se saute, ou se casse à la pioche.

En plus :

  • le son s'endort quand tu regardes une autre fenêtre ;
  • le ralenti ralentit aussi le son ;
  • saute + Entrée pose un bloc (au lieu de P).

✅ Ce que tu peux vérifier

  • ☐ Les caisses font 2 blocs, les tours 4, les murets 2 de haut. Monte sur une caisse.
  • ☐ Les cochons et les monstres des grottes sont 2 fois plus grands.
  • ☐ Saute par-dessus un muret, puis casse-en un avec la pioche (7 + T, 3 coups par pic).
  • ☐ V : ×1,5, puis ×2, puis ×1. La souris vise toujours la bonne case.
  • ☐ Va sur la page de Claude : silence. Reviens : la musique repart.
  • ☐ L : la musique et les bruits sont lents et graves.
  • ☐ Saute et appuie sur Entrée : une brique sous tes pieds.
  • Vérifie « version 29 ».

📐 Les « métriques » du monde

Dans un jeu, les tailles vont ensemble. Le héros mesure 2 blocs et saute 4,5 blocs. Alors :

Tous ces nombres sont dans config.js. Par exemple, hauteurs: { caisse: 2, tour: 4, muret: 2 }. Changer un nombre suffit à changer le monde !

🔍 La loupe : le zoom

Pour dessiner avec le zoom, le peintre dit au crayon : « tout ce que tu dessines, fais-le 2 fois plus grand » (ctx.scale(2, 2)). Mais l'écran ne grandit pas : il montre donc 2 fois moins de monde.

x à l'écran = (x dans le monde − caméra) × zoom
x dans le monde = x à l'écran ÷ zoom + caméra   ← pour savoir quelle case vise la souris

Les compteurs et la barre du bas sont dessinés après la loupe : ils restent à leur taille.

⛏️ Un muret qu'on casse

Avant, le jeu disait « tu touches le rectangle du muret → tu meurs ». Maintenant, il regarde aussi la grille : il ne pique que si une case touchée contient encore un pic (numéro 7). Un pic cassé, c'est une case 0 (l'air).

😴 Le son qui s'endort

Le navigateur prévient le jeu quand la fenêtre perd le « focus » (blur) ou quand l'onglet est caché (visibilitychange). Le synthétiseur se met alors en pause (suspend). Il repart (resume) quand tu reviens.

🐢 Le son au ralenti

Au ralenti, le temps du monde avance 4 fois moins vite (× 0,25). Pour le son, on fait pareil :

C'est exactement ce qui arrive à un disque qu'on freine avec le doigt !

⌨️ Une touche, deux actions

Entrée veut dire « valider » dans les menus, et « poser un bloc » pendant la partie. Le livre des touches (entrees.js) peut maintenant donner plusieurs actions à une même touche : chaque partie du jeu ne lit que la sienne.

🔎 Missions d'exploration

❓ Quiz

Au zoom ×2, combien de pixels fait un bloc à l'écran ?

40 × 2 = 80 px.

Au ralenti, une note de 440 Hz devient… ?

440 × 0,25 = 110 Hz : beaucoup plus grave.

Pourquoi un muret cassé à moitié ne pique-t-il plus là où le pic est cassé ?

Parce que le jeu regarde la grille : une case cassée contient 0 (l'air), et l'air ne pique pas.

🎒 Étape 30 : l'arme dans le dos, et les lasers ✅ livrée · à valider

Quand ton héros saute, il range son arme dans son dos, comme une épée dans son fourreau, et il la ressort en atterrissant. Collé à un mur, il fait un petit saut tout seul pour tirer par-dessus. Et tes meilleures armes ont un laser vert d'élite !

📋 La demande de Maxance

Le fichier complet est dans demandes/30-arme-dans-le-dos-et-lasers.md.

Règles :

  • 1b + petit saut : collé à un mur, l'arme va dans le dos. T = petit saut tout seul et tir par-dessus.
  • 2b : dans le dos quand il monte. Sur un escalier : pose de soldat, arme vers le bas.
  • 3b : T avec l'arme dans le dos = il la sort vite et tire.
  • 4b : à l'atterrissage, il la sort en 0,6 s, « shliiing ! ».
  • 5b : seulement les armes, pas les outils ni les blocs.

En plus : des lasers verts, et un pistolet laser qui fait un bruit de science-fiction.

✅ Ce que tu peux vérifier

  • ☐ Saute avec l'épée (1) : elle va dans le dos. Atterris : « shliiing ! ».
  • ☐ Colle-toi à une tour avec le lance-flammes : le réservoir reste sur ton dos.
  • ☐ Colle-toi à un mur avec le Magnum (=), appuie sur T : petit saut et tir par-dessus.
  • ☐ En l'air, appuie sur T : il sort son arme vite et tire.
  • ☐ Monte un escalier avec une arme : pose de soldat.
  • ☐ Mitrailleuse ()), Magnum, bazooka (²), fusil à pompe, sniper : laser vert.
  • ☐ Pistolet laser : « vwiiiou-ou-ou ».
  • Vérifie « version 30 ».

🐛 Le bug du lance-flammes

Le réservoir du lance-flammes était dessiné avec l'arme. Le peintre déplaçait tout le dessin de l'arme au même endroit que la main. Quand la main se levait au-dessus d'un bloc (étape 27), le réservoir montait avec elle et s'envolait !

La réparation : le réservoir (et le carquois du bazooka) est maintenant dessiné avec le corps, pas avec la main. Il reste accroché au dos, quoi que fasse l'arme.

🎒 Une petite machine à états pour l'arme

L'arme a maintenant 4 états, comme le héros (au sol, monte, descend…) :

✋ en main ──(il saute, ou collé à un mur)──▶ 🎒 dans le dos
🎒 dans le dos ──(il atterrit, ou T)──▶ 🗡️ il la sort (0,6 s, ou 0,15 s avec T) ──▶ ✋ en main
✋ en main ──(une marche d'escalier)──▶ 🪖 soldat (arme vers le bas)

Pour voir l'atterrissage, le jeu se souvient de l'état du héros au pas d'avant : « avant : en l'air, maintenant : au sol » → il vient d'atterrir !

🔄 Faire tourner un dessin

Une « pose » de l'arme, c'est 3 nombres : où est la main (x, y), et un angle. Pour la sortie, le jeu glisse doucement de la pose « dos » à la pose « main ». À la moitié du temps, il est à la moitié du chemin et à la moitié de l'angle : c'est une interpolation. Le peintre utilise ctx.rotate(angle) pour tourner le dessin.

🦘 Le petit saut et le tir en haut

Collé à un mur, T donne au héros une vitesse vers le haut de 480 px/s. La gravité le ralentit. En haut du saut, sa vitesse devient 0 (ou positive) : c'est là que le tir part. Hauteur du saut : 480 × 480 ÷ (2 × 2400) = 48 px.

🟢 Le laser de visée

Le jeu avance sur la ligne du tir, 4 px par 4 px, jusqu'à toucher un bloc, un monstre ou un cochon. Le peintre trace un trait vert jusque-là, avec un point qui clignote. C'est le même calcul que pour le pistolet laser, mais sans dégâts !

🔊 Un bruit de science-fiction

Le nouveau bruit du pistolet laser, ce sont 4 sons en même temps :

🔎 Missions d'exploration

❓ Quiz

Pourquoi le réservoir du lance-flammes s'envolait-il ?

Parce qu'il était dessiné avec la main : quand la main montait, il montait aussi. Maintenant il est dessiné avec le corps.

À la moitié de la sortie (0,3 s sur 0,6 s), où est l'arme ?

À peu près à mi-chemin entre le dos et la main, et à moitié tournée. (Le jeu ralentit au début et à la fin pour que ce soit plus joli.)

Avec un petit saut de 600 px/s au lieu de 480, il monterait de combien ?

600 × 600 ÷ 4 800 = 75 px.

🚦 Étape 31 : le carrefour et la voiture ✅ livrée · à valider

Après le dragon du bloc 100, c'est toi qui choisis la suite : sous terre, dans le ciel, ou tout droit, sur la route, en voiture !

📋 La demande de Maxance

Le fichier complet est dans demandes/31-carrefour-et-voiture.md.

Règles :

  • 1a : le carrefour est après le dragon du bloc 100.
  • 2b : un menu à 3 boutons.
  • 3b : sous terre = lave et minerais ; remonter = chemin dans le ciel.
  • 4a : la route avec des bosses, des trous et des rampes.
  • 5a : 1 bidon = 50 blocs, on remet un bidon quand c'est vide.
  • 6b : la voiture ne saute pas.
  • 7b : E pour monter dans la voiture.

✅ Ce que tu peux vérifier

  • ☐ Bats le dragon du bloc 100 : le menu « Choisis ton chemin » s'ouvre.
  • ☐ 1 : descends dans le souterrain.
  • ☐ 2 : monte dans le ciel.
  • ☐ 3 : la route. Colle-toi à la voiture et appuie sur E, puis ← →.
  • ☐ Fonce sur une rampe : la voiture s'envole au-dessus du trou !
  • ☐ Plus d'essence ? G verse un bidon.
  • Vérifie « version 31 ».

🧭 Un monde qui attend ta décision

Le monde est fabriqué morceau par morceau, juste avant que tu le voies (les tronçons de 30 blocs). Au carrefour, le jeu arrête de fabriquer : il ne sait pas encore quoi mettre ! Quand tu choisis, il range un mot dans sa mémoire : monde.chemin = "souterrain", "ciel" ou "route". Ensuite, chaque nouveau tronçon est fabriqué selon ce mot.

tronçon 0, 1, 2, 3 → normal (le dragon du bloc 100 est dans le 3)
tronçon 4          → le carrefour (tout plat, avec le panneau)
tronçon 5 … 32     → selon monde.chemin
tronçon 33         → l'arrivée (pareil pour tous)

C'est comme un livre dont tu es le héros : « si tu descends, va à la page 12 ».

🚗 La voiture, un « corps » comme le héros

La voiture a les mêmes nombres que le héros : x, y, largeur, hauteur, vitesse. Elle utilise la même gravité et la même façon d'avancer dans la grille. Quand tu es au volant, le héros ne bouge plus tout seul : il est « collé » au milieu de la voiture.

La rampe : quand la voiture monte une marche, le jeu lui donne une vitesse vers le haut (620 px/s). Comme elle va vite vers l'avant, elle s'envole au-dessus du trou.

⛽ L'essence, un compteur qui descend

Le réservoir compte des blocs : 50 au départ. À chaque pas, le jeu enlève la distance parcourue (en blocs). À 0, les flèches ne font plus avancer la voiture. G enlève 1 bidon du sac et remet 50 dans le réservoir.

⛏️ Sous terre et ☁️ dans le ciel

Sous terre, chaque colonne est remplie ainsi :

Les drapeaux sont plantés sur le sol du couloir : on y réapparaît.

Dans le ciel, le jeu fabrique un tronçon normal, puis il pose une ligne de planches tout en haut (ligne 2). Les dragons ne gardent pas le passage quand tu es bien au-dessus d'eux.

🔎 Missions d'exploration

❓ Quiz

Avec 1 bidon dans le réservoir et 5 dans le sac, combien de blocs peux-tu rouler ?

6 × 50 = 300 blocs. C'est pour ça qu'il y a des bidons à ramasser sur la route !

Pourquoi le monde arrête-t-il d'être fabriqué au carrefour ?

Parce que la suite dépend de ton choix : tant que monde.chemin est vide, il ne sait pas quoi fabriquer.

Si la rampe donnait 900 px/s vers le haut au lieu de 620, que se passerait-il ?

La voiture monterait plus haut et resterait plus longtemps en l'air : elle sauterait des trous plus larges.

🏎️ Étape 32 : un nouveau jeu, le circuit en 3D ✅ livrée · à valider

Un deuxième jeu, à côté du premier : une voiture qui fait la course sur un circuit, en 3D. Il s'ouvre ici : ▶ le circuit 3D.

📋 La demande

Le fichier complet est dans demandes/32-circuit-3d.md.

« Un jeu en 3D, un jeu de circuit avec une voiture. Le circuit, le plus simple possible. »

Choisi par Claude (à toi de dire si ça te va) :

  • un ovale : 2 lignes droites et 2 virages ;
  • 3 tours, avec un chrono et des records ;
  • dans l'herbe, 50 km/h maximum ;
  • 3 caméras (C).

✅ Ce que tu peux vérifier

  • ☐ Entrée : les 3 feux rouges s'éteignent, puis « GO ! ».
  • ☐ ↑ accélère, ↓ freine puis recule, ← → tournent.
  • ☐ Les roues avant tournent avec le volant.
  • ☐ Dans l'herbe, la voiture ralentit.
  • ☐ Après 3 tours : l'écran « Arrivée ».
  • ☐ Recharge la page : ton record est encore là.
  • ☐ C change de caméra, X montre les rayons X.
  • Vérifie « version 1 » en haut de la page du circuit.

🔺 Tout est fait de triangles

Une carte graphique ne sait dessiner qu'une forme : le triangle. La voiture, les sapins, la route, la tribune… tout est découpé en triangles, comme une sculpture en papier plié. Une boîte (le bas de la voiture) = 6 faces = 12 triangles. Une roue = 48 triangles.

Appuie sur X : tu vois les arêtes de tous les triangles en vert. Dans « sous le capot », la ligne « triangles dessinés » te dit combien il y en a : environ 9 000, dessinés 60 fois par seconde !

📐 Trois nombres pour une position : x, y, z

Dans le jeu de plateforme, une position avait 2 nombres : x (gauche-droite) et y (haut-bas). En 3D, il en faut 3 :

x = gauche ↔ droite
y = bas ↕ haut        (le sol est à y = 0)
z = avant ↔ arrière   (la profondeur)

Ici, on compte en mètres, pas en pixels. La voiture fait 4,2 m de long, comme une vraie.

🎥 La caméra et la perspective

Pour dessiner, l'ordinateur se pose une question pour chaque coin de triangle : « ce point du monde, où tombe-t-il sur l'écran plat ? ». Il fait 2 calculs :

  1. La caméra : où est l'œil, et vers où il regarde (11 m derrière la voiture, 4,5 m de haut) ;
  2. La perspective : on divise par la distance. Ce qui est 2 fois plus loin paraît 2 fois plus petit. C'est pour ça que la route devient toute fine au loin.

Ces calculs sont rangés dans des matrices (des tableaux de 16 nombres), dans circuit/moteur/maths3d.js.

🧭 Avancer en biais : cos et sin

La voiture a un angle (vers où elle regarde) et une vitesse. Pour avancer, il faut découper « tout droit » en « un peu vers x » et « un peu vers z » :

x = x + cos(angle) × vitesse × temps
z = z + sin(angle) × vitesse × temps

Avec un angle de 0, cos = 1 et sin = 0 : on avance seulement vers x. Avec un angle de 90°, c'est l'inverse.

🚪 Les portes invisibles

Comment le jeu sait qu'un tour est fini ? Le circuit est coupé en 4 : la ligne (porte 0) et 3 portes invisibles. Il faut les passer dans l'ordre : 1, 2, 3, puis la ligne. Sinon, on pourrait tricher : passer la ligne, reculer, la repasser… Aux rayons X, les portes sont violettes, et la prochaine est verte.

🔎 Missions d'exploration

❓ Quiz

Combien de triangles pour une boîte ?

6 faces × 2 triangles = 12 triangles.

Combien de nombres faut-il pour dire où est un point en 3D ?

3 : x, y et z.

Un sapin 2 fois plus loin paraît comment ?

2 fois plus petit : c'est la perspective (on divise par la distance).

Pourquoi faut-il passer les portes dans l'ordre ?

Pour qu'on ne puisse pas tricher en faisant des allers-retours sur la ligne d'arrivée.

📏 Étape 33 : un circuit 3 fois plus grand ✅ livrée · à valider

Tu as testé le circuit, tu aimes le style, mais il était trop petit. Le voici 3 fois plus grand : ▶ le circuit 3D.

📋 La demande

Le fichier complet est dans demandes/33-circuit-plus-grand.md.

  • ✍️ 3 fois plus grand : lignes droites de 360 m, virages de 120 m de rayon.
  • ✍️ La route garde sa largeur : 14 m.

✅ Ce que tu peux vérifier

  • ☐ Les lignes droites sont beaucoup plus longues.
  • ☐ Les virages sont plus doux.
  • ☐ La route a la même largeur qu'avant.
  • ☐ La mini-carte montre tout le circuit.
  • ☐ Un tour à fond prend environ 35 s.
  • Vérifie « version 2 » en haut de la page du circuit.

🎛️ Deux nombres ont suffi

Pour agrandir tout le circuit, on a changé seulement 2 nombres dans circuit/config.js :

longueurDroite: 120  →  360
rayon:           40  →  120

La route, les bordures, le damier, la tribune, les portes invisibles, les rayons X : tout est calculé à partir de ces nombres. Personne n'a redessiné le circuit à la main ! C'est la force d'un fichier de réglages.

🧮 Combien de mètres dans un tour ?

Un tour = 2 lignes droites + 2 demi-cercles (= 1 cercle entier) :

tour = 2 × 360 + 2 × 3,14 × 120
     = 720 + 754
     ≈ 1 474 m        (avant : 491 m, donc 3 fois plus)

À 42 m/s (150 km/h), ça fait 1 474 ÷ 42 ≈ 35 secondes.

🌫️ La brume et la mini-carte

Au loin, les objets se fondent dans la couleur du ciel : c'est la brume. Elle cache le bord du monde, et elle aide l'ordinateur (il n'a pas besoin de dessiner très loin). Avec un circuit plus grand, on l'a repoussée : elle commence à 300 m au lieu de 180 m.

La mini-carte, elle, calcule toute seule son échelle : 130 pixels ÷ la largeur du circuit. Aujourd'hui, 1 m = 0,21 pixel. Si tu agrandis encore le circuit, elle s'adaptera.

🔎 Missions d'exploration

❓ Quiz

Si on met le rayon à 200 m, le circuit devient plus long ou plus court ?

Plus long : les demi-cercles sont plus grands (2 × 3,14 × 200 ≈ 1 257 m de virages au lieu de 754).

Pourquoi a-t-il fallu plus de sapins ?

Le terrain est passé de 400 m à 800 m de côté : sa surface est 4 fois plus grande. Avec 70 sapins, il aurait eu l'air vide.

Les portes invisibles ont-elles bougé ?

Oui : elles sont toujours à 1/4, 1/2 et 3/4 du tour, mais le tour est plus long, donc elles sont plus loin (environ 369 m, 737 m et 1 106 m).

🔵 Étape 34 : une voiture adverse ✅ livrée · à valider

Tu n'es plus seul sur la piste : une voiture bleue, conduite par l'ordinateur, veut gagner la course ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/34-voiture-adverse.md.

  • ✍️ Vitesse « moyen » : 140 km/h (toi : 150 km/h).
  • ✍️ Les voitures se cognent et rebondissent.
  • ✍️ Si elle finit ses 3 tours avant toi : perdu tout de suite.

Choisi par Claude : elle est bleue, elle change de voie pour te doubler, et la base de données compte tes victoires et tes défaites.

✅ Ce que tu peux vérifier

  • ☐ Une voiture bleue part à côté de toi.
  • ☐ Elle fait le tour toute seule, sans sortir de la route.
  • ☐ Mets-toi juste devant elle : elle change de voie pour te doubler.
  • ☐ Touche-la : « BOUM ! », les deux voitures rebondissent.
  • ☐ En haut à gauche : 1er ou 2e. Sur la mini-carte : un point bleu.
  • ☐ Elle finit avant toi : « Perdu ! ». Toi avant elle : « Gagné ! ».
  • Vérifie « version 3 » en haut de la page du circuit.

🤖 Comment l'ordinateur conduit : la carotte

La voiture bleue est exactement la même que la tienne : même fichier, mêmes calculs. La seule différence, c'est qui appuie sur les touches. Pour toi, c'est le clavier. Pour elle, c'est un petit cerveau, le pilote (circuit/logique/pilote.js). 120 fois par seconde, il fait 3 choses :

  1. il regarde un point 18 m devant lui, au milieu de sa voie : c'est la « carotte » ;
  2. si la carotte est à sa gauche, il appuie sur ←, et si elle est à sa droite, sur → ;
  3. il garde toujours le pied sur l'accélérateur.

Comme la carotte avance avec lui, il ne l'attrape jamais… et il fait le tour du circuit ! Aux rayons X (X), tu vois la carotte en bleu clair, et ce que pense le pilote : « cible à 3° → à droite ».

Pour te doubler : si tu es devant lui, sur sa voie, à moins de 22 m, il change de voie (intérieure ↔ extérieure).

💥 Comment savoir si deux voitures se touchent : les cercles

Tester si deux rectangles tournés se touchent, c'est compliqué. L'astuce des jeux vidéo, c'est de remplacer chaque voiture par 2 cercles, un à l'avant et un à l'arrière. Deux cercles se touchent si la distance entre leurs centres est plus petite que 2 rayons. C'est un seul calcul !

rayon d'un cercle = 1,05 m
ça touche si : distance entre les centres < 2 × 1,05 = 2,1 m

Quand ça touche, le jeu fait 2 choses (circuit/moteur/chocs.js) :

  1. il écarte les voitures, pour qu'elles ne se rentrent plus dedans ;
  2. il les fait rebondir : chacune reçoit une poussée dans la direction du choc. Le réglage rebond: 0.3 dit si elles rebondissent peu (0) ou beaucoup (1).

Aux rayons X, tu vois les cercles blancs autour des deux voitures. Ils deviennent rouges quand ça touche.

🥇 Qui est devant ?

Pour savoir qui est 1er, le jeu calcule la distance parcourue par chaque voiture depuis le départ : (tour − 1) × 1 474 m + la progression sur le tour en cours. La plus grande est devant.

🔎 Missions d'exploration

❓ Quiz

Quelle est la différence entre ta voiture et la voiture bleue ?

Seulement qui appuie sur les touches (le clavier ou le pilote), sa couleur et sa vitesse maximale. Le reste, c'est exactement le même code.

Deux cercles de 1,05 m de rayon, avec 3 m entre leurs centres : ils se touchent ?

Non : il faudrait moins de 2,1 m.

Si on met la vitesse max de l'adversaire à 41,7 m/s, ça fait combien en km/h ?

41,7 × 3,6 ≈ 150 km/h : aussi vite que toi ! Ce serait le niveau « difficile ».

Si la carotte était à 3 m au lieu de 18 m, que se passerait-il ?

Le pilote tournerait très brusquement, il zigzaguerait. Une carotte plus loin rend la conduite plus douce.

🔊 Étape 35 : le bruit du moteur ✅ livrée · à valider

Vroum ! Ta voiture a maintenant un gros moteur grave, et tu entends la voiture bleue arriver. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/35-bruit-du-moteur.md.

  • ✍️ Un gros moteur grave, qui monte avec la vitesse.
  • ✍️ La voiture bleue s'entend selon la distance.
  • ✍️ « BOUM » au choc, « chhhh » dans l'herbe, bips au départ.

✅ Ce que tu peux vérifier

  • ☐ Le moteur devient plus aigu quand tu accélères.
  • ☐ La voiture bleue s'entend quand elle est près, et plus du tout quand elle est loin.
  • ☐ Avec un casque : elle est à gauche ou à droite selon sa place.
  • ☐ Bips au départ, « chhhh » dans l'herbe, « BOUM » au choc.
  • ☐ B coupe et remet le son.
  • Vérifie « version 4 » en haut de la page du circuit.

🎛️ Un son fabriqué avec des nombres

Le jeu n'a aucun fichier de son : il fabrique ses sons, comme un synthétiseur (circuit/moteur/son.js). Un son, c'est de l'air qui vibre. Le nombre de vibrations par seconde s'appelle la fréquence, en hertz (Hz) : plus c'est grand, plus c'est aigu.

fréquence du moteur = 38 Hz + 52 Hz × (vitesse ÷ vitesse max)
à l'arrêt  :  38 Hz   (très grave)
à fond     :  90 Hz

Pour faire un gros moteur, on mélange 3 vibrations « en dents de scie » (un son rugueux), on fait trembler le volume (les explosions dans les cylindres), et on passe le tout dans un filtre qui étouffe les aigus, comme une main devant la bouche.

📏 Entendre la distance

Le volume de la voiture bleue dépend de la distance entre vous deux : à 0 m, à fond ; à 70 m, plus rien. Le jeu calcule aussi si elle est à ta gauche ou à ta droite, et il envoie le son plus dans une oreille que dans l'autre : c'est le panoramique.

🔎 Missions d'exploration

❓ Quiz

Un son de 880 Hz est-il plus grave ou plus aigu qu'un son de 440 Hz ?

Plus aigu : 2 fois plus de vibrations par seconde. C'est le bip du « GO ».

À la moitié de la vitesse max, quelle est la fréquence du moteur ?

38 + 52 × 0,5 = 64 Hz.

Pourquoi le jeu attend-il que tu appuies sur une touche pour faire du bruit ?

Les navigateurs interdisent aux pages de faire du bruit toutes seules, pour protéger tes oreilles. Il faut un geste de toi (une touche, un clic).

🏠 Étape 36 : le garage, 5 voitures et les pièces ✅ livrée · à valider

Le jeu commence maintenant au garage. Ramasse les pièces dorées sur le circuit pour t'acheter des voitures plus rapides ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/36-garage-et-pieces.md.

  • ✍️ 5 voitures, chacune avec sa forme, sa couleur et sa vitesse : la Rouge, une « Lamborghini », une « Porsche », une « Bugatti » et une Formule 1 au son aigu.
  • ✍️ Prix : 0, 50, 100, 200, 400 pièces.
  • ✍️ 50 pièces sur le circuit à chaque course.
  • ✍️ Les pièces sont gardées, même si tu perds.

✅ Ce que tu peux vérifier

  • ☐ Le jeu commence au garage. ← → : les 5 voitures, chacune avec sa forme.
  • ☐ Sur une voiture trop chère, Entrée : le garage dit combien il te manque.
  • ☐ Sur la route : des pièces dorées qui tournent. Passe dessus : « ding » !
  • ☐ Après la course, gagnée ou perdue : tes pièces sont gardées, et tu reviens au garage.
  • ☐ Avec 50 pièces, achète le Taureau : il va plus vite et il a un autre bruit.
  • ☐ La Formule 1 a un son aigu.
  • Vérifie « version 5 » en haut de la page du circuit.

🗂️ Une voiture, c'est une fiche

Les 5 voitures sont rangées dans circuit/config.js, comme des fiches :

{ nom: "Le Taureau", prix: 50, vitesseMax: 44.4, acceleration: 15,
  couleurs: [jaune, noir], son: { ralenti: 55, max: 150 } }

Le code de la voiture est le même pour toutes : il lit simplement la fiche de la voiture choisie. Pour ajouter une 6e voiture, il suffirait d'ajouter une fiche (et sa forme). C'est ce qu'on appelle décrire avec des données.

🛠️ Sculpter une voiture avec des tranches

Pour donner une forme à chaque voiture (circuit/affichage/modeles.js), on empile des tranches : des boîtes qu'on peut pincer (plus étroites en haut) et pencher (plus basses à l'avant). Le Taureau est un grand coin pointu, la Flèche a un dos qui plonge, la Fusée est longue avec une calandre en fer à cheval, et la Formule 1 est un corps tout fin avec 2 ailerons et un pilote au casque jaune. Appuie sur X au garage : tu verras les triangles de chaque voiture !

🪙 Les pièces : une marche au hasard

Les 50 pièces sont posées tous les 29 m environ (1 474 m ÷ 50), sur une des 3 voies : gauche, milieu ou droite. Pour qu'on puisse les enchaîner, la voie change petit à petit : la plupart du temps on reste sur la même voie, parfois on passe à la voisine. Pour savoir si tu prends une pièce, le jeu mesure la distance entre le milieu de ta voiture et la pièce : moins de 2,4 m, et elle est à toi !

💾 Le porte-monnaie dans la base de données

Tes pièces, tes voitures achetées et ta voiture choisie sont rangées dans la base de données (version 3). Elles survivent quand tu fermes la page. Le garage ne touche jamais au tiroir lui-même : il annonce « achat » à la radio, et c'est la sauvegarde qui enlève les pièces et range la nouvelle voiture.

🔎 Missions d'exploration

❓ Quiz

Combien de pièces faut-il en tout pour acheter les 4 voitures ?

50 + 100 + 200 + 400 = 750 pièces, soit au moins 15 courses parfaites.

190 km/h, ça fait combien de mètres par seconde ?

190 ÷ 3,6 ≈ 52,8 m/s : c'est le nombre écrit dans la fiche de la Formule 1.

Pourquoi les pièces ne sont-elles pas écrites dans le tiroir à chaque « ding » ?

Écrire 50 fois par course, ce serait du gaspillage : le jeu compte les pièces en mémoire vive, et les écrit à la fin de la course.

🎢 Étape 37 : choisir sa carte, et le parcours ✅ livrée · à valider

Le jeu commence maintenant par « Choisis ta carte ». Nouvelle carte : le parcours, une grande map plate pleine de tremplins, de loopings et de tunnels, avec son propre garage de tout-terrain. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/37-cartes-et-parcours.md.

  • ✍️ Choisir la carte avant le garage : circuit, parcours ou ville.
  • ✍️ Le parcours : une map plate, en balade libre, avec montées, tremplins, loopings, tunnels, pièces partout et cartons à défoncer.
  • ✍️ Un garage par carte : 4x4, pickup, buggy et monster truck pour le parcours.
  • La ville arrive à l'étape 38.

✅ Ce que tu peux vérifier

  • ☐ Au début : « Choisis ta carte » (1 2 3, Entrée).
  • ☐ Parcours → un garage avec 4 véhicules tout-terrain.
  • ☐ Monte sur un plateau, saute d'un tremplin, fais un looping (vite !).
  • ☐ Passe dans un tunnel, défonce des cartons.
  • ☐ Trouve des pièces en l'air, sur les plateaux, dans les loopings.
  • ☐ R : retour au départ ; ⌫ : retour aux cartes.
  • Vérifie « version 6 » en haut de la page du circuit.

🧱 Un relief fait de 2 formes

Tout le relief du parcours (circuit/logique/parcours.js) est fait de 2 formes seulement :

Une montée = une pente + un bloc + une pente. Un tremplin = une pente toute seule : au bout, le sol disparaît… et tu t'envoles !

Sol ou mur ? Le jeu compare la hauteur du dessus avec la hauteur de ta voiture. Moins de 0,7 m plus haut : c'est une marche, tu montes. Plus haut : c'est un mur, BOUM.

✈️ Le saut : la gravité

Quand tu montes une pente, ta voiture gagne une vitesse vers le haut (vy). Au bout du tremplin, le sol disparaît : la voiture garde cette vitesse et monte… mais la gravité enlève 20 m/s à vy chaque seconde. Elle ralentit, s'arrête de monter, puis retombe. C'est une courbe en forme d'arc : une parabole.

à chaque pas :  vy = vy − 20 × temps
                 y  = y  + vy × temps
                 si y touche le sol → atterrissage !

Le monster truck saute 1,5 fois plus haut : sa vy est multipliée par 1,5 au décollage.

🎢 Le looping : un rail en cercle

À l'entrée du looping, le jeu vérifie 3 choses : tu es bien à l'entrée, tu roules dans le bon sens, et tu vas à au moins 54 km/h. Si oui, ta voiture est « accrochée » au rail. Un nombre, θ (thêta), compte l'angle parcouru, de 0° à 360°. La position vient du cercle :

avancer = rayon × sin(θ)
hauteur = rayon × (1 − cos(θ))     → à θ = 180°, tu es tout en haut, la tête en bas !

Encore cos et sin, comme pour avancer en biais à l'étape 32 !

📦 Les cartons qui volent

Chaque carton a sa position et sa vitesse (vx, vy, vz). Quand tu fonces dedans, il reçoit la vitesse de ta voiture, plus un bond vers le haut et un peu de hasard. Ensuite, la même gravité que pour tes sauts le fait retomber, en tournant sur lui-même.

🏠 Un garage par carte

Chaque garage est une liste de fiches dans config.js. Les fiches du parcours ont des nombres en plus : virage (le buggy tourne mieux), saut (le monster truck saute plus haut) et ecrase (le monster truck ne ralentit pas dans les cartons). Tes pièces et tes voitures achetées sont les mêmes sur toutes les cartes.

🔎 Missions d'exploration

❓ Quiz

Une pente de 3 m de haut devant toi, ta voiture est au sol : sol ou mur ?

Ça dépend de l'endroit ! Par le bas de la pente, le dessus commence à 0 m : tu montes. Par le côté, là où la pente est déjà haute, c'est plus de 0,7 m au-dessus de toi : c'est un mur.

Tu décolles avec vy = 10 m/s. Au bout de combien de temps arrêtes-tu de monter ?

La gravité enlève 20 m/s chaque seconde : 10 ÷ 20 = 0,5 s.

Dans un looping de 12 m de rayon, à quelle hauteur es-tu tout en haut ?

12 × (1 − cos 180°) = 12 × 2 = 24 m.

✨ Étape 38 : un rendu réaliste avec Three.js ✅ livrée · à valider

Fini les blocs : des voitures arrondies et brillantes, de vraies ombres, de l'herbe et du goudron qui ont l'air vrais. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/38-rendu-realiste.md.

  • ✍️ Plus réaliste, « pas en pixels ».
  • ✍️ Avec Three.js, pour les voitures et les maps en même temps.

✅ Ce que tu peux vérifier

  • ☐ Les voitures sont arrondies, avec vitres, jantes et phares.
  • ☐ Des ombres sous les voitures, les arbres, la tribune.
  • ☐ L'herbe, le goudron et la terre ont l'air vrais.
  • ☐ ⌫ ou le bouton « 🗺️ Cartes » : retour au menu des cartes.
  • Vérifie « version 7 ».

📚 Three.js, une « bibliothèque »

Jusqu'ici, on dessinait tout avec notre propre moteur 3D. Pour faire plus beau, on utilise Three.js : un moteur 3D écrit par des milliers de développeurs. C'est une bibliothèque : du code tout prêt qu'on range dans le projet (circuit/vendor/three.min.js). Les règles du jeu (la physique, les tours, les pièces) n'ont pas changé : seul « le peintre » a changé.

🚗 Une voiture : un profil « extrudé »

On dessine le profil de la voiture vu de côté (le nez, le capot, le toit, les passages de roues), avec des coins arrondis. Puis on l'extrude sur la largeur de la voiture, comme un emporte-pièce dans de la pâte : le dessin plat devient un volume (circuit/affichage/modeles.js).

☀️ Lumière, ombres, matériaux, textures

🔎 Missions d'exploration

❓ Quiz

Qu'est-ce qui a changé dans les règles du jeu avec Three.js ?

Rien ! Seul l'affichage a changé. C'est pour ça qu'on range le code en familles : la logique ne dessine jamais.

Pourquoi utiliser des « instances » pour les arbres ?

Pour aller plus vite : la forme est envoyée une seule fois, puis seulement les positions.

🏙️ Étape 39 : la ville ✅ livrée · à valider

Une vraie ville : immeubles, feux rouges, voitures qui circulent, parcs… et ton personnage qui descend de la voiture pour en prendre une autre ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/39-la-ville.md.

  • ✍️ Immeubles, rues, carrefours, circulation, feux rouges, parcs, pièces cachées.
  • ✍️ Un personnage qui descend (E) et prend d'autres voitures.
  • ✍️ Garage : citadine, SUV, voiture basse, camionnette, camion.
  • Livraisons et course dans les rues : plus tard (le grand parcours est passé avant).

✅ Ce que tu peux vérifier

  • ☐ Menu → 3 : le garage de la ville, avec 5 véhicules.
  • ☐ Les feux changent de couleur ; les voitures s'arrêtent au rouge.
  • ☐ Arrête-toi, E : ton personnage descend. Les flèches le font marcher.
  • ☐ Va à côté d'une voiture garée, E : tu montes dedans !
  • ☐ Cherche les pièces dans les ruelles et les parcs.
  • Vérifie « version 8 ».

🗺️ Une ville en damier

La ville est une grille : 6 rues dans un sens, 6 dans l'autre, et 36 carrefours. Pour trouver où est la rue numéro k, une seule formule : position = début + k × (pâté + rue). Entre les rues, des pâtés de maisons, coupés en 4 par une ruelle.

🚦 Le code de la route de l'ordinateur

Chaque voiture de la circulation va d'un carrefour au carrefour voisin, sur la voie de droite. Au carrefour, elle tire au hasard : tout droit, à gauche ou à droite. Pour tourner en douceur, elle suit une courbe de Bézier : un départ, une arrivée, et un point au coin qui « tire » la courbe. Avant d'avancer, elle regarde : le feu est rouge ? quelqu'un est juste devant ? Alors elle freine.

🚶 Le personnage

Ton personnage est comme une toute petite voiture : une position, un angle, une vitesse. Il se cogne aux immeubles avec les mêmes calculs que les voitures. Ses jambes et ses bras se balancent comme un pendule (avec sin) quand il marche.

🔎 Missions d'exploration

❓ Quiz

Combien de carrefours y a-t-il dans une grille de 6 × 6 rues ?

6 × 6 = 36.

Pourquoi une voiture de la circulation n'attend-elle que les voitures qui vont dans le même sens qu'elle ?

Sinon, deux voitures qui tournent au même carrefour pourraient s'attendre l'une l'autre pour toujours : un « blocage ».

🛣️ Étape 40 : le grand parcours ✅ livrée · à valider

Un circuit comme un Carrera géant : des montées, des descentes, des ponts, une grande rampe, une plateforme à trous, des nitros partout et un énorme saut ! Et de nouveaux véhicules dans tous les garages. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/40-grand-parcours.md.

  • ✍️ Une 4e carte : l'ancien parcours reste.
  • ✍️ Nitros = plaques au sol qui te propulsent.
  • ✍️ Si tu tombes : tu tombes en bas !
  • ✍️ Rallye (circuit), quad (parcours), taxi et police (ville), kart (grand parcours).

✅ Ce que tu peux vérifier

  • ☐ Menu → 4 : le garage du grand parcours, avec le kart.
  • ☐ Roule sur une plaque bleue : flammes et jauge « NITRO ».
  • ☐ La grande rampe, puis la plateforme : évite les trous (ou tombe dedans pour voir !).
  • ☐ La longue ligne droite : prends les 3 nitros et saute le creux.
  • ☐ Les nouveaux véhicules dans chaque garage ; en ville, la police : H pour la sirène.
  • Vérifie « version 9 ».

〰️ Une route faite avec une liste de points

La route est écrite dans config.js comme une liste de 30 points : [x, z, hauteur]. Pour passer d'un point à l'autre sans faire d'angle, le jeu trace une courbe (une « spline de Catmull-Rom ») qui passe par tous les points, comme un fil souple tendu entre des clous. Puis il la découpe en morceaux de 3 m : environ 640 petits rectangles de route, les tronçons.

🏢 Une route à plusieurs étages

Sous un pont, il y a deux sols : la route d'en haut et la route d'en bas. Le jeu garde le sol le plus haut qui soit sous la voiture (pas plus de 0,7 m au-dessus d'elle). Si la voiture est sur le pont, c'est le pont ; si elle est en bas, le pont est trop haut : elle passe dessous. Et s'il n'y a plus rien sous les roues (le bord, un trou, le creux) : la gravité la fait tomber.

🔥 Le nitro

Une plaque de nitro donne 2,5 secondes de poussée : la vitesse max est multipliée par 1,5 (sans gagner plus de 58 km/h, depuis l'étape 41), et la voiture accélère même sans appuyer. Après, elle ralentit doucement jusqu'à sa vitesse normale. Pour sauter le creux de 50 m, il faut aller vite : le saut est une parabole, et plus on va vite, plus on va loin.

🔎 Missions d'exploration

❓ Quiz

Pourquoi la route est-elle découpée en morceaux de 3 m ?

Parce que pour chaque petit rectangle, c'est facile de savoir si la voiture est dessus et à quelle hauteur. Une courbe entière, ce serait très compliqué à calculer.

Une voiture roule à 50 m/s pendant 1 seconde en l'air. Quelle distance fait-elle ?

50 m : distance = vitesse × temps. Juste la largeur du creux !

☁️ Étape 41 : les méga-rampes ✅ livrée · à valider

Une piste en bois toute seule dans le ciel, avec des bords relevés comme un toboggan, des motos à doubler, de grands sauts, une barre de dégâts et un chrono ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/41-mega-rampes.md.

  • ✍️ Une 5e carte, des bords relevés partout.
  • ✍️ Tombé dans les nuages → retour au dernier drapeau.
  • ✍️ Véhicules à doubler, barre de dégâts, chrono et arrivée, nitros et sauts.

✅ Ce que tu peux vérifier

  • ☐ Menu → 5, puis le garage, puis ↑ : le chrono démarre.
  • ☐ Double les motos sans les toucher (sinon : regarde la barre de dégâts).
  • ☐ Les drapeaux deviennent verts ; tombe exprès pour voir où tu repars.
  • ☐ Prends les 3 nitros avant le saut n° 3 (60 m).
  • ☐ À l'arrivée : ton temps et ton record.
  • Vérifie « version 10 ».

🛷 Des bords relevés

La coupe de la piste ressemble à un U très plat : le milieu est plat, et les bords montent en quart de cercle, comme dans un skatepark. Pour le jeu, c'est simple : si ta voiture va trop loin sur le côté, on la remet sur la piste et on la tourne un peu dans le bon sens. Elle glisse contre le bord au lieu de rebondir. Seul un choc très fort compte comme un choc.

🚩 Les points de contrôle

Le jeu retient le plus loin où tu es allé (en mètres depuis le départ). Dès que tu dépasses un drapeau, il devient « le dernier drapeau ». Si ta hauteur descend 45 m sous lui, tu es perdu dans les nuages : le jeu te remet sur ce drapeau.

💥 La barre de dégâts

Chaque choc a une vitesse (en m/s). Les dégâts augmentent de vitesse du choc × 3 %. Un choc à 10 m/s, c'est donc 30 % ! À 100 %, ta voiture est cassée.

🔎 Missions d'exploration

❓ Quiz

Tu touches une moto à 5 m/s puis une autre à 10 m/s. Combien de dégâts ?

5 × 3 + 10 × 3 = 15 + 30 = 45 %.

Pourquoi le chrono ne s'arrête-t-il pas quand tu tombes ?

Parce que tomber doit coûter quelque chose : sinon, on pourrait tomber sans risque. Le temps perdu à recommencer depuis le drapeau, c'est la punition.

🏝️ Étape 42 : la ville géante, ses ponts, ses aéroports et ses magasins ✅ livrée · à valider

La ville est maintenant sur une île, au milieu de la mer ! Deux grands ponts mènent à des îles avec un aéroport, des motos roulent partout, et ton personnage peut faire les magasins. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/42-ville-geante.md.

  • ✍️ Une map énorme, un pont, un pont vers l'aéroport.
  • ✍️ Des motos, des magasins pour acheter des choses.
  • ✍️ À l'aéroport, plein de véhicules à prendre.
  • Les petits boulots : étape 43. Les avions et les hélicos : étape 44.

✅ Ce que tu peux vérifier

  • ☐ Menu → 3, puis roule tout droit vers l'est : le pont de l'Est !
  • ☐ Essaie de rouler dans la mer (impossible).
  • ☐ À l'aéroport : prends une voiture du parking avec E.
  • ☐ À pied devant un magasin : E, achète les baskets, puis cours !
  • ☐ Achète la moto au garage de la ville.
  • Vérifie « version 11 ».

🗺️ Un plan d'architecte qu'on pose sur la carte

Les 3 aéroports sont pareils. Le jeu dessine UN plan, avec ses propres coordonnées : u le long de la piste, w en travers. Pour chaque île, il tourne le plan et le pose au bon endroit : x = centre + cos × u − sin × w. C'est ce qu'on appelle un « repère local ». Avec la même formule, la piste de l'aéroport du Nord est tournée d'un quart de tour.

🌉 Un pont qui monte en arc

La hauteur de la route sur le pont, c'est 16 × sin(π × u ÷ 500) : 0 m au début, 16 m au milieu (u = 250 m), 0 m à la fin. La fonction sinus dessine exactement une bosse bien ronde.

🌊 Pas de voiture dans la mer

À chaque pas de calcul, le jeu regarde si ta voiture est sur la terre (une île ou un pont). Si le pas qu'elle vient de faire mène dans l'eau, il l'annule : la voiture revient où elle était, et elle rebondit un peu.

🔎 Missions d'exploration

❓ Quiz

Sur le pont (500 m), à quelle hauteur es-tu à 125 m du début ?

16 × sin(π × 125 ÷ 500) = 16 × sin(π/4) ≈ 16 × 0,71 ≈ 11,3 m.

Pourquoi dessiner un seul plan d'aéroport au lieu de 3 ?

Pour écrire moins de code et ne pas faire d'erreur : si on améliore le plan (un hangar de plus), les 3 aéroports changent en même temps.

💼 Étape 43 : les petits boulots ✅ livrée · à valider

Ton personnage peut travailler pour gagner des pièces : livreur de pizzas, chauffeur de taxi, vendeur au magasin et éboueur ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/43-petits-boulots.md.

  • ✍️ Pizzas, taxi, vendeur, poubelles.
  • On commence dans un rond lumineux avec J.
  • Les avions et les hélicos : à l'étape 44 !

✅ Ce que tu peux vérifier

  • ☐ Les 3 ronds orange sur la mini-carte.
  • ☐ 🍕 À la pizzeria, J, puis suis la flèche jaune.
  • ☐ 🚕 À la station de taxis (près du départ), J, et arrête-toi à côté du client qui fait signe.
  • ☐ 🛍️ Dans un magasin, J, et donne le bon article.
  • ☐ 🗑️ Au dépôt, prends le camion (E), J, et vide les poubelles vertes doucement.
  • Vérifie « version 12 ».

🤖 Une machine à états

Chaque boulot est dans une « étape ». Pour le taxi : chercher (aller au client) → il monte → deposer (l'emmener) → il paie → chercher le suivant… Un événement (« je suis arrêté à côté du client ») fait passer à l'étape suivante. C'est la même idée que les phases de la course (garage → décompte → course → arrivée).

🧭 La flèche qui montre le chemin

Le jeu calcule l'angle vers la cible avec atan2, puis enlève l'angle de ta voiture. Si le résultat vaut 0, la cible est droit devant : la flèche pointe vers le haut. C'est exactement le calcul du pilote de la voiture bleue (étape 34) !

🔎 Missions d'exploration

❓ Quiz

Un client de taxi fait 600 m. Combien paie-t-il ? Et dans le vrai taxi ?

600 × 0,04 = 24 pièces. Dans le vrai taxi : 48 pièces.

Tu livres une pizza en 20 s sur 50 s. As-tu un pourboire ?

Oui : il reste 30 s, c'est plus que la moitié (25 s). 10 + 5 = 15 pièces.

✈️ Étape 44 : les avions, l'hélico et l'avion de chasse ✅ livrée · à valider

Tous les appareils des aéroports se pilotent ! Le petit avion, l'avion de ligne (d'un aéroport à l'autre), l'hélicoptère… et l'avion de chasse avec sa mitrailleuse et ses missiles. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/44-avions-et-police.md.

  • ✍️ Piloter avions, hélicos et avions de ligne.
  • ✍️ Des avions de chasse avec des missiles et une mitrailleuse.
  • ✍️ Cibles d'entraînement, voitures qui explosent.
  • La police aux 5 étoiles : à l'étape 45 !

✅ Ce que tu peux vérifier

  • ☐ À l'aéroport, E dans l'hélico, puis Espace pour monter.
  • ☐ Le petit avion : ↑ sur la piste, puis Z pour décoller.
  • ☐ L'avion de ligne : va te poser sur la piste d'un autre aéroport (+60 pièces).
  • ☐ L'avion de chasse : F mitrailleuse, G missile, sur les ballons de l'île lointaine.
  • Vérifie « version 13 ».

🪶 Pourquoi un avion vole (et pourquoi il décroche)

Les ailes d'un avion ne le portent que s'il va assez vite : l'air qui passe dessus et dessous le pousse vers le haut. C'est la portance. Dans le jeu : sous 75 % de la vitesse de décollage, la portance disparaît. L'avion décroche, et la gravité le fait tomber. Il faut remettre les gaz pour qu'il vole de nouveau. L'hélico, lui, a un rotor qui souffle vers le bas : il peut rester immobile en l'air.

🚀 Un missile qui suit sa cible

Au départ, le missile choisit la cible la plus proche devant le nez de l'avion (dans un « cône »). Ensuite, à chaque pas de calcul, il tourne un petit peu vers elle, sans pouvoir tourner trop vite. C'est le même principe que la voiture bleue qui vise sa « carotte » à l'étape 34 !

🔎 Missions d'exploration

❓ Quiz

Le chasseur décolle à 45 m/s. En dessous de quelle vitesse décroche-t-il ?

45 × 0,75 ≈ 34 m/s, soit environ 122 km/h.

Une balle va à 450 m/s. En combien de temps fait-elle 900 m ?

900 ÷ 450 = 2 secondes… mais elle disparaît au bout de 1,6 s : elle ne va donc qu'à 720 m.

🚓 Étape 45 : la police aux 5 étoiles ✅ livrée · à valider

Emboutis une voiture et la police arrive ! Plus le choc est fort, plus il y a d'étoiles. À 5 étoiles, l'hélico de la police te suit avec son projecteur… Sème-les ou c'est le commissariat ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/44-avions-et-police.md.

  • ✍️ 1 à 5 étoiles selon la force du choc.
  • ✍️ L'hélico de la police à 5 étoiles.
  • ✍️ Attrapé → commissariat ; semé → loin et caché.

✅ Ce que tu peux vérifier

  • ☐ Un petit choc contre une voiture : ⭐ ; un gros : ⭐⭐⭐⭐⭐.
  • ☐ Les voitures de police arrivent, sirène et gyrophare allumés.
  • ☐ À 5 étoiles : l'hélico et son projecteur.
  • ☐ Cache-toi derrière les immeubles : les étoiles clignotent puis s'éteignent.
  • ☐ Laisse-toi attraper : retour au commissariat.
  • Vérifie « version 14 ».

👀 Comment un policier « voit »

Le jeu trace une ligne droite entre le policier et toi, et regarde un point tous les 6 m sur cette ligne. Si un de ces points est dans un immeuble, le policier ne te voit pas. S'il est à plus de 150 m, non plus. L'hélico, lui, voit par-dessus les immeubles !

🧭 Comment la police te trouve

Si elle te voit, elle fonce droit sur toi. Sinon, elle va de carrefour en carrefour. À chaque carrefour, elle choisit la rue qui la rapproche le plus de toi. C'est une recherche gourmande : on prend toujours ce qui semble le meilleur tout de suite. Ça ne marche pas toujours (une impasse…), mais c'est simple et rapide.

⭐ Une jauge qui monte et qui descend

Les étoiles montent d'un coup (une bêtise) et descendent lentement (une toutes les 5 s quand tu es caché). Beaucoup de jeux font comme ça : la « jauge de recherche ».

🔎 Missions d'exploration

❓ Quiz

Tu fonces dans une voiture à 36 km/h. Combien d'étoiles ?

36 km/h = 10 m/s. C'est plus que 8 et moins que 13 : 3 étoiles.

Tu as 4 étoiles et tu te caches. Au bout de combien de temps la police est-elle semée ?

6 s pour que ça clignote, puis 4 × 5 s : 6 + 20 = 26 secondes.

🔧 Étape 46 : la voiture ne tremble plus ✅ corrigée · à valider

Tu as trouvé un bug : la voiture tremblait dans les montées et les descentes. Voici l'enquête ! ▶ le circuit 3D

📋 Le bug

La fiche est dans demandes/46-voiture-qui-tremble.md.

  • « À chaque montée ou descente, la voiture tremble. »

✅ Ce que tu peux vérifier

  • ☐ La grande rampe (carte 4) : plus de tremblement.
  • ☐ La méga-rampe (carte 5) : pareil.
  • ☐ Les montées du parcours et les ponts de la ville : la voiture penche en douceur.
  • Vérifie « version 15 ».

🕵️ L'enquête

Pour trouver le bug, Claude a mesuré : à chaque pas de calcul (120 par seconde), il a noté la pente de la voiture et additionné tous les changements. C'est la « secousse ». Sur la grande rampe, elle valait 15,5. Sur un pont de la ville, seulement 0,2. Le coupable était donc sur les routes en tronçons de 3 m.

Les tronçons se chevauchent un peu (60 cm), pour qu'il n'y ait pas de fente dans les virages. Mais dans ce chevauchement, le jeu croyait que la route était plate, puis elle remontait d'un coup. Ça faisait une petite marche tous les 3 m : à 110 km/h, ça fait 10 marches par seconde. La voiture tremblait ! Maintenant, la pente continue dans le chevauchement, et la secousse ne vaut plus que 0,5.

En plus, la voiture penche maintenant en douceur : à chaque image, elle rattrape seulement un quart de l'écart avec la bonne pente, comme une vraie suspension.

❓ Quiz

À 110 km/h (30 m/s), combien de tronçons de 3 m passes-tu par seconde ?

30 ÷ 3 = 10 tronçons par seconde : 10 petites marches, d'où le tremblement.

🌦️ Étape 47 : la météo et le ciel ✅ livrée · à valider

Soleil, vent, brouillard, pluie, orage, neige, blizzard : la météo change toute seule sur toutes les cartes, et elle change la conduite ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/47-meteo-et-decor-realiste.md.

  • ✍️ 7 météos qui changent toutes seules (toutes les 2 minutes).
  • ✍️ La météo change la conduite.
  • Le décor réaliste et les nouvelles voitures : étapes 48, 49 et 50.

✅ Ce que tu peux vérifier

  • ☐ En bas à gauche : la météo actuelle et la suivante. M pour passer à la suivante.
  • ☐ 🌧️ Pluie : la route brille, la voiture glisse un peu.
  • ☐ ⛈️ Orage : un éclair… puis le tonnerre.
  • ☐ 🌨️ Neige et ❄️ blizzard : le sol blanchit, la voiture dérape.
  • ☐ 🌫️ Brouillard : on ne voit plus loin. 🌬️ Vent : l'avion est poussé.
  • Vérifie « version 16 ».

☁️ Des nuages calculés pixel par pixel

Les nuages ne sont pas des images : la carte graphique les calcule pour chaque pixel du ciel. Elle additionne des « vagues de hasard » de plus en plus petites : une grosse vague pour la forme du nuage, puis des petites pour les détails. C'est le bruit fractal. Les montagnes et les nuages des films sont souvent faits comme ça !

🚗 Pourquoi la voiture glisse

Sur le sec, la voiture va toujours là où pointe son nez. Sur la neige, elle a deux directions : celle de son nez, et celle où elle va vraiment (son déplacement). À chaque pas de calcul, le déplacement rattrape un petit morceau de l'écart avec le nez. Plus l'adhérence est faible, plus le morceau est petit. La voiture « dérape » : elle continue un peu tout droit quand tu tournes.

⚡ L'éclair, puis le tonnerre

La lumière de l'éclair arrive presque tout de suite. Le bruit du tonnerre, lui, va à 340 m/s. Si l'éclair est à 1 020 m, le tonnerre arrive 3 secondes plus tard. Le jeu fait exactement ça !

🔎 Missions d'exploration

❓ Quiz

Un éclair tombe à 1 700 m. Quand entends-tu le tonnerre ?

1 700 ÷ 340 = 5 secondes plus tard.

Combien de temps faut-il pour voir les 7 météos ?

7 × 2 minutes = 14 minutes (ou appuie 6 fois sur M !).

🌿 Étape 48 : la nature et l'eau ✅ livrée · à valider

De l'herbe en touffes qui plie au vent, des fleurs, des rochers, 3 espèces d'arbres, et une mer et des étangs qui ondulent. ▶ le circuit 3D

📋 La demande

Dans demandes/47-meteo-et-decor-realiste.md.

  • ✍️ Le décor ultra réaliste : herbe, arbres, eau.
  • ✍️ Toujours le plus beau (pas de réglage de qualité).

✅ Ce que tu peux vérifier

  • ☐ Sur toutes les cartes (sauf les méga-rampes, dans le ciel) : des touffes d'herbe, des fleurs, des rochers.
  • ☐ Des feuillus, des sapins et des bouleaux (tronc blanc).
  • ☐ Avec le vent (M) : l'herbe plie.
  • ☐ Dans la ville : la mer et les étangs bougent ; dans l'orage, les vagues grossissent.
  • ☐ Sous la neige : l'herbe et les arbres blanchissent.
  • Vérifie « version 17 ».

🌱 Des milliers de plantes, sans ralentir

Une carte a environ 14 000 touffes d'herbe. Dessiner 14 000 objets un par un serait très lent. L'astuce : les instances. On envoie une touffe à la carte graphique, puis une liste de places. Et l'herbe est rangée par parcelles de 80 m : on ne dessine que celles à moins de 230 m de la caméra.

🌊 La carte des pentes

L'eau est toute plate ! Mais une image spéciale dit, pour chaque point, dans quel sens l'eau « penche ». La lumière en tient compte : on croit voir des vagues. On fait glisser l'image un peu à chaque image : les vagues bougent.

🔎 Missions d'exploration

❓ Quiz

Pourquoi ne pas dessiner l'herbe à 500 m ?

On ne la verrait presque pas, mais elle coûterait du travail à la carte graphique. Le jeu serait plus lent pour rien.

L'eau est-elle vraiment en vagues ?

Non ! Elle est plate. C'est la carte des pentes qui trompe la lumière.

🏎️ Étape 49 : les vraies voitures ✅ livrée · à valider

Une vraie Bugatti Chiron, une vraie Porsche 911, une vraie Lamborghini Aventador, une Honda NSX, et des voitures de tous les jours plus réalistes. Le monster truck rebondit sur ses ressorts ! ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/49-vraies-voitures.md.

  • ✍️ Plus de voitures « style » : de vraies Chiron, 911 et Aventador.
  • ✍️ Citadine, SUV genre 508, moto genre Kawasaki, camionnette genre Vito, quad, Honda (NSX).
  • ✍️ Le monster truck : un vieux pick-up des années 80, de gros rétroviseurs, des ressorts.
  • ✍️ Les voitures d'abord, les routes et la ville ensuite (étape 50).

✅ Ce que tu peux vérifier

  • ☐ Garage du circuit : la Porsche 911 (phares ronds), l'Aventador (phares en Y), la Chiron (le C sur le côté).
  • ☐ Garage de la ville : citadine, SUV avec ses « crocs » de lumière, NSX au toit noir, camionnette, moto verte.
  • ☐ Garage du parcours : le monster truck rebondit après un saut ; le quad a des pneus à crampons.
  • ☐ Sous le capot, avec le monster truck : la ligne « ressorts », et « Boing ! » dans le journal.
  • ☐ Tes voitures achetées sont toujours à toi (le Taureau est devenu la Porsche 911, la Flèche l'Aventador, la Fusée la Chiron).
  • Vérifie « version 18 ».

✏️ Comment on dessine une vraie voiture

1. On dessine son profil, vu de côté. 2. On le « pousse » sur toute la largeur, comme de la pâte à modeler dans un emporte-pièce. 3. On le galbe : chaque point de la carrosserie est rapproché du milieu, plus près du nez (vu de dessus, les coins deviennent ronds) et plus en haut (les flancs rentrent vers le toit). 4. On ajoute ce qui la rend reconnaissable : les phares ronds de la 911, le Y de la Lamborghini, le C de la Bugatti.

🌀 La loi du ressort

Plus on écrase un ressort, plus il pousse fort. Quand le monster truck atterrit, les roues s'arrêtent d'un coup, mais la caisse est lourde : elle continue à descendre et écrase les ressorts. Ils la repoussent, elle remonte trop haut, redescend… L'amortisseur freine ce mouvement, sinon elle rebondirait pour toujours.

−29 cm +14 cm −7 cm l'atterrissage ↓

🔎 Missions d'exploration

❓ Quiz

Sans amortisseur, que ferait la caisse ?

Elle rebondirait pour toujours, comme un ressort qu'on lâche dans le vide.

Pourquoi tes voitures achetées n'ont pas disparu ?

La sauvegarde a changé de version (11 → 12) : le jeu a converti les anciens noms (« taureau ») en nouveaux (« porsche911 »).

🏙️ Étape 50 : les routes et la ville ✅ livrée · à valider

Du goudron fissuré, des traces de pneus, des trottoirs en dalles, des façades détaillées, des fenêtres qui s'allument quand il fait sombre, des panneaux et le nom des rues. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/50-routes-et-ville.md.

  • ✍️ Un décor ultra réaliste sur toutes les cartes : ici, les routes et la ville.

✅ Ce que tu peux vérifier

  • ☐ En ville, en haut à gauche : le nom de la rue où tu roules.
  • ☐ Aux carrefours : les plaques bleues des rues, les panneaux « 50 », les lignes d'arrêt.
  • ☐ Sur les trottoirs : des bancs, des poubelles, des bouches d'incendie rouges.
  • ☐ Sous l'orage (M) : les fenêtres allumées brillent.
  • ☐ Sur le circuit : des fissures et des traces de pneus.
  • Vérifie « version 19 ».

💡 La lumière « émise »

Une façade a DEUX images : la façade normale, et une image toute noire sauf les fenêtres allumées. La deuxième est une lumière émise : elle brille toute seule, même sans soleil. Le jeu règle sa force avec la météo : lumière = 0,05 + 1,3 × (1 − soleil). Plein soleil → presque rien ; orage → les fenêtres brillent.

🪧 Sur quelle rue es-tu ?

Les rues sont rangées comme les lignes d'un cahier, tous les 88 m. Pour savoir sur laquelle tu es, le jeu divise ta position par 88 et arrondit : il trouve le numéro de la rue la plus proche. Si tu es à moins de 8 m de son milieu, tu es dessus ! Si tu es sur deux rues en même temps, c'est un carrefour.

🔎 Missions d'exploration

❓ Quiz

Pourquoi les fenêtres brillent-elles plus sous l'orage qu'au soleil ?

Leur lumière est la même, mais le jeu la règle avec la météo : 1 − soleil. Au soleil, 1 − 1 = 0 ; sous l'orage, 1 − 0,25 = 0,75.

Combien de plaques de rue y a-t-il ?

36 carrefours × 2 poteaux × 2 plaques = 144.

🏎️ Étape 51 : les voitures ultra réalistes ✅ livrée · à valider

La Bugatti Chiron, la Porsche 911, la Lamborghini Aventador, la Honda NSX, la Peugeot 508, la Mercedes Vito et la Kawasaki Ninja, refaites avec leurs vraies mesures, des courbes partout et des roues comme dans la réalité. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/51-voitures-ultra-realistes.md.

  • ✍️ De vraies voitures, avec leur vrai nom (sans logo).
  • ✍️ Fait en code, mais avec de vraies courbes.
  • ✍️ Des roues comme dans GTA : jantes, pneus, freins et suspension.

✅ Ce que tu peux vérifier

  • ☐ Les 7 voitures dans les garages (circuit, ville, méga-rampes).
  • ☐ Approche la caméra d'une roue : rayons, écrous, lettres sur le pneu, étrier de couleur.
  • ☐ Freine fort : le nez plonge. Tourne vite : la voiture penche vers l'extérieur.
  • ☐ Sous le capot : « la caisse penche ».
  • Vérifie « version 20 ».

🛶 Construire une voiture comme une coque de bateau

Avant, on dessinait le profil de la voiture, puis on le « poussait » sur toute la largeur : la voiture restait un peu « boîte ». Maintenant, on la décrit par une dizaine de tranches, vues de face (comme si on coupait la voiture en rondelles) : le bas, les épaules, le dessus, la largeur. Le jeu invente une tranche tous les 4 cm entre elles, en suivant une courbe douce, puis il les relie par des milliers de petits triangles. Les vitres font partie de la peau : chaque triangle est rangé « peinture » ou « vitre », selon sa place.

🛞 Une vraie roue

Le pneu est « tourné » (comme un vase sur un tour de potier), avec des rainures et des lettres moulées. La jante est creuse, avec ses rayons, 5 écrous et un cache. Derrière, le disque percé et l'étrier, la pince qui serre le disque pour freiner. Le disque tourne avec la roue, l'étrier non !

🔎 Missions d'exploration

❓ Quiz

Pourquoi le nez plonge quand on freine ?

La caisse est lourde : quand les roues ralentissent, elle continue vers l'avant et appuie sur les ressorts de devant.

Qu'est-ce que l'empattement ?

La distance entre les roues avant et les roues arrière : 2,71 m pour la Chiron, 2,45 m pour la 911.

🏁 Étape 53 : le drift, le crissement et la fumée ✅ livrée · à valider

À fond dans un virage, la voiture part en drift : elle glisse en biais, les pneus crissent, fument et laissent des traces noires. Une sportive qui démarre à fond fait patiner ses pneus. ▶ le circuit 3D

(L'étape 52, les vraies maquettes 3D, est mise de côté : elle demandait un compte Sketchfab.)

📋 La demande

Le fichier complet est dans demandes/53-drift-et-fumee.md.

  • ✍️ Le drift arrive tout seul : vite (plus de 70 % de la vitesse max) et en tournant à fond.
  • ✍️ La fumée au démarrage pour toutes les sportives.

✅ Ce que tu peux vérifier

  • ☐ Sportive à l'arrêt, ↑ à fond : « Les pneus patinent ! », fumée et traces.
  • ☐ Très vite, ← ou → à fond : « DRIFT ! », la voiture glisse en biais, ça crisse.
  • ☐ Les traces noires restent sur la route.
  • ☐ Sous le capot : « drift » et « pneus ».
  • Vérifie « version 22 ».

🦀 Pourquoi la voiture avance « en crabe »

Depuis l'étape 47, la voiture a deux directions : celle de son nez et celle où elle va vraiment. D'habitude, la deuxième rattrape la première 14 fois par seconde : on ne voit rien. En drift, elle ne la rattrape plus que 4,5 fois par seconde, et le nez tourne 1,3 fois plus vite. Les deux directions s'écartent : environ 30°. C'est l'angle de drift !

💨 Les particules

La fumée, ce sont 220 petits nuages qu'on réutilise. Chacun naît derrière une roue, monte, grossit et devient transparent, puis « meurt » au bout de 1,8 s : il est alors prêt à renaître ailleurs.

🔎 Missions d'exploration

❓ Quiz

Pourquoi la fumée ne disparaît pas d'un coup ?

Chaque nuage devient un peu plus transparent à chaque image, jusqu'à disparaître à la fin de sa vie.

Combien de traces noires au maximum ?

700 : après, la plus vieille est réutilisée pour la nouvelle (une « file circulaire »).

🏜️ Étape 54 : le rallye-raid, un nouveau jeu ✅ livrée · à valider

Un désert comme au Dakar : des dunes, de la boue, des cailloux, une rivière avec un gué, et 7 véhicules de rallye-raid (4x4, buggys, motos et camion). Balade libre ! ▶ le rallye-raid

📋 La demande

Le fichier complet est dans demandes/54-rallye-raid.md.

  • ✍️ Un nouveau jeu à part, avec son propre lien.
  • ✍️ Balade libre (pas de chrono).
  • ✍️ 4x4 de rallye-raid, buggys, motos de rallye et camion du Dakar.
  • ✍️ Plusieurs terrains : sable, boue, gué, cailloux.

✅ Ce que tu peux vérifier

  • ☐ Au garage, ← → : Toyota Hilux, Peugeot 3008 DKR, Mini Buggy, Can-Am, KTM, Honda, Kamaz. Entrée pour partir.
  • ☐ En haut à gauche, le terrain change sous tes roues ; dans la boue, tu vas moins vite.
  • ☐ Traverse le gué (la rivière bleue sur la petite carte) : ça éclabousse !
  • ☐ À fond sur une bosse : « SAUT ! » et la longueur du saut.
  • ☐ R te ramène sur la piste, C change la caméra, ⌫ retourne au garage.
  • Vérifie « version 1 » en haut de la page du jeu.

🧭 Chaque terrain a sa fiche

Le jeu ne « voit » pas le sable : à chaque pas, il demande à logique/terrain.js « qu'y a-t-il en (x, z) ? ». La réponse est un nom ("sable", "boue"…), et ce nom ouvre une fiche dans config.js :

terrainadhérencevitesse maxfrottement
🛣️ piste95 %× 10,3
🏜️ sable55 %× 0,781,8
🪨 cailloux72 %× 0,81,2 (et ça secoue)
🟤 boue32 %× 0,53,5
🌊 gué60 %× 0,455
💧 eau profonde40 %× 0,29

L'adhérence, c'est la force avec laquelle les pneus « s'accrochent » : faible, le véhicule glisse dans les virages. Le frottement freine tout le temps. Et chaque véhicule a sa motricité : le camion (1,3) passe mieux dans la boue que les motos (0,9).

⛰️ Le relief et les sauts

Le sol est fait avec du « bruit » : une formule qui donne une hauteur un peu au hasard mais toujours la même au même endroit (grâce à la graine 2017). On additionne plusieurs bruits, des grands pour les collines et des petits pour les bosses. Quand le sol descend plus vite que la gravité ne peut tirer le véhicule vers le bas, il décolle : il est en l'air jusqu'à toucher le sol. Le jeu mesure la longueur du saut.

🔎 Missions d'exploration

❓ Quiz

Pourquoi le désert est-il le même à chaque partie ?

Parce que le bruit part toujours de la même graine (2017). Même graine = même désert.

Comment les autres pilotes savent où aller ?

Ils regardent un point de la piste 18 m devant eux et tournent le volant vers lui.

Pourquoi tu glisses plus dans la boue ?

Son adhérence est de 32 % : les pneus n'accrochent presque pas, alors la direction où tu vas rattrape lentement la direction de ton nez.

🏙️ Étape 55 : voitures, routes et immeubles très réalistes ✅ livrée · à valider

Les voitures ont de vrais phares à LED, des feux, des plaques et une ombre douce ; la Rouge devient une Peugeot 208. La ville a des boutiques, des balcons, des corniches et des toits pleins de machines. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/55-voitures-routes-immeubles-realistes.md.

  • ✍️ Des voitures très réalistes, en code (pas de maquettes).
  • ✍️ Des routes et des immeubles plus vrais.
  • ✍️ Tout d'un coup.

✅ Ce que tu peux vérifier

  • ☐ Dans la ville : boutiques (boulangerie, café, pharmacie…), stores, balcons, bandeaux à chaque étage.
  • ☐ Regarde les toits depuis un pont : machines, cages d'escalier, réservoirs d'eau, antennes.
  • ☐ Au garage : les phares qui brillent, les feux rouges, la plaque, le nom de la marque derrière.
  • ☐ La Peugeot 208, la Renault Clio, le taxi Toyota et la Peugeot 308 de police.
  • ☐ Sous chaque voiture, une ombre douce (elle disparaît quand tu sautes).
  • Vérifie « version 23 ».

💡 Pourquoi une voiture a l'air « vraie »

Ton cerveau reconnaît une vraie voiture grâce à de petits détails : des phares avec un verre et des lampes dedans (pas une tache blanche), une plaque, le nom de la marque, une vitre qui penche vers l'intérieur, et surtout l'ombre de contact : juste sous la voiture, c'est tout noir, parce que la lumière du ciel n'arrive pas. Sans elle, une voiture a l'air de flotter.

🔩 Recoller les pièces (pour que le jeu reste rapide)

Une voiture a maintenant environ 170 pièces. Pour la carte graphique, chaque pièce est un « dessin » à faire. Alors, une fois la voiture construite, on recolle toutes les pièces de la même matière (tout le chrome ensemble, toutes les LED ensemble…). La voiture a la même allure, mais elle n'a plus qu'une cinquantaine de pièces. Résultat : la ville se dessine en 1 536 fois par image, alors qu'avant c'était 1 969, et pourtant il y a beaucoup plus de détails !

🏢 Le relief des façades

Avant, un immeuble était une boîte avec une image de fenêtres collée dessus : tout plat. Maintenant, on ajoute de vrais morceaux qui dépassent du mur : le soleil fait des ombres dessous, et ça change tout. Il y en a plus de 5 000, mais ce sont des « instances » : une seule forme de boîte, et une liste de places et de tailles.

🔎 Missions d'exploration

❓ Quiz

Pourquoi l'ombre douce disparaît quand la voiture saute ?

Parce qu'elle vient de la voiture qui touche presque le sol. En l'air, la voiture est loin du sol : il n'y a plus d'ombre de contact (il reste l'ombre du soleil).

Pourquoi recoller les pièces rend le jeu plus rapide ?

La carte graphique dessine vite, mais chaque « dessin » à lancer prend du temps. Moins de dessins = plus d'images par seconde.

🐢 Étape 56 : le circuit ne rame plus ✅ livrée · à valider

Tu as dit : « ça rame, ça saccade ». On a mené l'enquête, trouvé le coupable (trop d'ordres de dessin) et réparé. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/56-le-circuit-rame.md.

  • ✍️ Le circuit 3D saccade.

✅ Ce que tu peux vérifier

  • ☐ Roule en ville : ça doit être plus fluide.
  • ☐ Sous le capot : « objets envoyés à la carte graphique » (moins de 700 en ville au lieu de 1 535).
  • ☐ Sous le capot : « qualité automatique ».
  • Vérifie « version 24 ».

🕵️ L'enquête

Un bon développeur ne devine pas : il mesure. On a chronométré chaque morceau du jeu. Les règles : 1 ms par image. Le tableau de bord : moins de 1 ms. Le dessin 3D en ville : 256 ms ! Le coupable, c'était le nombre d'ordres de dessin : à chaque image, le jeu disait 1 535 fois à la carte graphique « dessine ça ». Chaque ordre prend un peu de temps, même pour une toute petite pièce.

🧩 Les réparations

🔎 Missions d'exploration

❓ Quiz

Pourquoi 100 petites pièces coûtent plus cher qu'une grosse ?

Parce que chaque pièce est un ordre de dessin, et chaque ordre prend du temps, même si la pièce est minuscule.

Combien de millisecondes pour avoir 60 images par seconde ?

1 000 ÷ 60 ≈ 16,7 ms par image.

🚗 Étape 57 : des voitures plus grandes, plus vraies, et plus dorées ✅ livrée · à valider

Les voitures grandissent de 15 %, la moto de 50 %. Les phares et les rétros rétrécissent, et la peinture n'est plus dorée. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/57-voitures-plus-grandes-et-vraies.md.

  • ✍️ Voitures un peu plus grandes (+15 %).
  • ✍️ Moto bien plus grande (+50 %).
  • ✍️ Plus de véhicules dorés, des phares et des rétros moins énormes.

✅ Ce que tu peux vérifier

  • ☐ Au garage, les voitures sont plus grandes, et la Kawasaki Ninja bien plus grande.
  • ☐ La peinture n'a plus de reflet doré (regarde la Porsche blanche ou la Bugatti bleue).
  • ☐ Les phares et les rétroviseurs ont une taille normale.
  • ☐ Le pilote de la moto a une combinaison de cuir.
  • Vérifie « version 25 ».

✨ Pourquoi les voitures avaient l'air dorées

Une surface en métal reflète la lumière avec sa propre couleur, une surface en peinture la reflète blanche. Notre peinture était réglée à 55 % de métal : elle prenait la couleur chaude du soleil (un peu orange) et avait l'air dorée. Une vraie peinture de voiture, c'est une couleur sous un vernis transparent : presque pas de métal. On est passé à 12 %.

📏 Agrandir sans tout refaire

Chaque voiture est un groupe de pièces. Pour l'agrandir, on ne refait pas chaque pièce : on dit au groupe « × 1,15 », et toutes les pièces grandissent ensemble. Comme la voiture est posée au sol (en y = 0), elle grandit vers le haut et reste sur la route.

🔎 Missions d'exploration

❓ Quiz

Si la voiture était centrée en hauteur au lieu d'être posée au sol, que se passerait-il en l'agrandissant ?

Elle grandirait vers le bas aussi : ses roues s'enfonceraient dans la route.

🏎️ Étape 58 : la course à 12 et le métier de policier ✅ livrée · à valider

Sur le circuit, tu cours contre 11 adversaires qui ont tous la même voiture que toi, chacun de sa couleur. En ville, tu peux devenir policier et poursuivre des voitures en fuite. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/58-course-a-12-et-policier.md.

  • ✍️ 12 voitures, toutes du même modèle que la tienne, de couleurs différentes.
  • ✍️ Gagné seulement si tu finis 1er.
  • ✍️ Des adversaires tous différents (85 % à 97 % de la vitesse).
  • ✍️ Policier : 5 voitures en fuite, aussi rapides que toi ; tu les touches = attrapées ; 20 pièces chacune.

✅ Ce que tu peux vérifier

  • ☐ Circuit : prends la F1 (ou la Porsche…) : les 11 autres ont la même, de 11 couleurs.
  • ☐ En haut à gauche : ta place (« 7e / 12 » au départ) et qui est en tête.
  • ☐ La petite carte montre les 12 voitures.
  • ☐ Ville : va au rond bleu du commissariat, J. Suis la flèche jaune et touche la voiture en fuite !
  • ☐ Sous le capot : « Les 11 adversaires » et « voiture en fuite ».
  • Vérifie « version 26 ».

🏁 Qui est 1er ?

Pour chaque voiture, le jeu calcule sa progression : combien de mètres elle a parcourus depuis le départ, en comptant les tours (tour × 1 474 m + où elle est sur le tour). Ta place, c'est 1 + le nombre d'adversaires qui ont une plus grande progression que toi. Simple !

🤖 Comment pensent les 11 pilotes

🚓 La voiture en fuite

Elle va aussi vite que toi en ligne droite. Mais à chaque carrefour où elle tourne, elle doit freiner jusqu'à 43 km/h : c'est là que tu gagnes du terrain. Pour freiner juste ce qu'il faut, elle utilise une formule de physique : la vitesse qu'on peut avoir à une distance d avant le virage, c'est √(43² + 2 × freinage × d). Et pour s'échapper, 3 fois sur 4, elle tourne du côté qui l'éloigne le plus de toi.

🔎 Missions d'exploration

❓ Quiz

Pourquoi les adversaires vont au plus à 97 % et pas 100 % ?

Avec la même voiture qu'eux, si le plus rapide allait aussi vite que toi, tu ne pourrais jamais le rattraper : tu pars 7e !

Où rattrape-t-on le mieux la voiture en fuite ?

Dans les virages des carrefours : elle descend à 43 km/h.

🌦️ Étape 59 : des voitures encore plus vraies, et choisir sa météo ✅ livrée · à valider

On voit le conducteur à travers les vitres, les ailes sont bombées, la peinture reflète l'horizon. Et avant de rouler, tu choisis ta météo. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/59-voitures-vraies-et-choix-meteo.md.

  • ✍️ Améliorer la forme, l'intérieur, les roues, la peinture et les reflets.
  • ✍️ Choisir sa météo avant de rouler (soleil, vent, pluie, orage, neige, blizzard), et qu'elle reste.

✅ Ce que tu peux vérifier

  • ☐ Après la carte : « Choisis ta météo » (← → ou 1 à 6, puis Entrée).
  • ☐ En bas à gauche : ta météo « (choisie) » ; elle ne change plus.
  • ☐ Au garage : le conducteur, le volant, les sièges à travers les vitres.
  • ☐ Les ailes bombées au-dessus des roues, l'horizon qui se reflète sur les portières.
  • Vérifie « version 27 ».

🪞 Pourquoi les reflets changent tout

Une voiture brillante est un miroir un peu flou. Si elle ne reflète qu'un ciel tout gris, elle a l'air en plastique. Maintenant, on fabrique un petit monde rien que pour les reflets : le ciel en haut, une ligne d'horizon, le sol sombre en bas, des immeubles au loin et le soleil. Three.js le transforme en « carte des reflets ». Résultat : le haut des portières est clair (le ciel), le bas est sombre (le sol), et on voit la forme de la voiture.

🔔 La cloche des ailes

Au-dessus de chaque roue, la carrosserie gonfle de 4,5 cm. Pour que ce soit doux, on utilise une courbe en forme de cloche : e−(écart ÷ largeur)². Au milieu de la roue, ça vaut 1 (tout le gonflement) ; en s'éloignant, ça descend doucement vers 0.

🔎 Missions d'exploration

❓ Quiz

Pourquoi le bas des portières est plus sombre que le haut ?

Parce qu'il reflète le sol (sombre), et le haut reflète le ciel (clair).

🛡️ Étape 60 : la bataille de tanks, un nouveau jeu ✅ livrée · à valider

Toi et 3 alliés contre 4 tanks ennemis, dans une campagne avec un village en ruines. Avec un Leclerc, un Abrams ou un Leopard 2. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/60-bataille-de-tanks.md.

  • ✍️ Un nouveau jeu à part.
  • ✍️ Équipe contre équipe : toi + 3 alliés contre 4 ennemis.
  • ✍️ Une campagne avec un village en ruines.
  • ✍️ Leclerc, Abrams, Leopard 2 ; 4 obus pour détruire un tank.

✅ Ce que tu peux vérifier

  • ☐ Au garage : ← → pour les 3 tanks, Entrée pour la bataille.
  • ☐ ↑ ↓ ← → pour le tank, Q D pour la tourelle, Espace pour tirer.
  • ☐ Le viseur devient rouge quand un ennemi est en face : le canon se règle tout seul.
  • ☐ 4 obus = le tank est détruit (une épave noire qui fume).
  • ☐ Fonce dans un arbre : il est écrasé !
  • Vérifie « version 1 » en haut de la page du jeu.

🔄 Deux machines en une

Un tank, c'est la caisse (avec les chenilles) et la tourelle (avec le canon), qui tournent chacune de leur côté. Le jeu garde deux angles : celui de la caisse, et celui de la tourelle par rapport à la caisse. L'angle du canon dans le monde, c'est la somme des deux. Pour tourner sur place, une chenille avance et l'autre recule : regarde « chenilles » sous le capot.

🎯 Pourquoi l'obus monte un peu

Un obus retombe en volant (la gravité). Pour toucher loin, il faut donc tirer un peu vers le haut. La visée assistée calcule l'angle juste : ½ × arcsin(gravité × distance ÷ vitesse²). Plus la cible est loin, plus le canon monte.

🤖 Le cerveau des 7 autres tanks

🔎 Missions d'exploration

❓ Quiz

Pourquoi l'ordinateur recharge plus lentement que toi ?

Pour que tu aies un petit avantage : il vise presque aussi bien que toi et ils sont 4 !

Comment le jeu sait si un tank en voit un autre ?

Il avance le long de la ligne droite entre les deux, tous les 4 m, et regarde si ce point est dans une maison ou sous une colline.

🪖 Étape 61 : sortir du tank, les soldats, le 4x4, l'hélico et l'avion ✅ livrée · à valider

Tu peux maintenant sortir de ton tank et te battre à pied, au milieu de 24 soldats, ou prendre un engin garé dans ton camp. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/61-soldats-et-engins.md.

  • ✍️ Sortir du tank ; à pied : pistolet, mitrailleuse, et un lance-roquettes en plus.
  • ✍️ 12 soldats par équipe.
  • ✍️ Un 4x4 à mitrailleuse, garé dans ton camp.
  • ✍️ Un hélico qui lâche des bombes, un avion de chasse, un drone : seulement toi les pilotes.

✅ Ce que tu peux vérifier

  • ☐ E : tu sors du tank. 1 2 3 : pistolet, mitrailleuse, lance-roquettes. Espace : tirer.
  • ☐ Marche vers le 4x4 (derrière ton camp) : « E : monter » apparaît.
  • ☐ Hélico : Q pour décoller, ↑ pour avancer, Espace : une bombe tombe sur la croix rouge.
  • ☐ Avion : il décolle tout seul ; ↓ pour monter, Espace pour un missile, E pour t'éjecter en parachute.
  • ☐ Fonce sur un soldat rouge avec ton tank : il est écrasé.
  • Vérifie « version 2 » en haut de la page du jeu.

🎭 Un seul toi, plusieurs « modes »

Le jeu garde une petite fiche, monde.toi, qui dit où tu es : char, pied, jeep, helico, avion ou drone. Les touches sont les mêmes partout, mais elles sont envoyées seulement à ce que tu conduis : ↑ fait avancer le tank, ou marcher le soldat, ou piquer l'avion. Quand tu es dans un engin, ton soldat est « assis dedans » : il suit l'engin et les balles ne peuvent pas le toucher. Regarde « mode » sous le capot.

🔫 La balle qui ne vole pas

Une balle va beaucoup trop vite pour qu'on la voie voler. Alors le jeu ne la fait pas voler : au moment du tir, il cherche l'ennemi le plus proche dans un petit cône devant l'arme, regarde s'il y a un mur entre les deux, puis tire au sort (le pistolet touche plus souvent que la mitrailleuse, et c'est plus dur de loin). On appelle ça une balle « instantanée ». La roquette, la bombe et le missile, eux, volent vraiment (comme l'obus).

💣 Pourquoi lâcher la bombe AVANT d'être au-dessus

La bombe garde la vitesse de l'hélico en tombant. Elle met √(2 × hauteur ÷ 9,8) secondes pour arriver au sol, et pendant ce temps elle continue d'avancer. La croix rouge fait ce calcul pour toi : c'est là qu'elle tombera.

🤖 Le cerveau des 24 soldats

🔎 Missions d'exploration

❓ Quiz

Pourquoi tes soldats ne sont pas touchés quand tu es dans l'hélico ?

Parce que les balles ne cherchent que les soldats qui ne sont pas « dans un engin », et que les tanks ne tirent pas en l'air.

Pourquoi le missile tourne tout seul en vol ?

Il est « guidé » : à chaque petit pas (1/120 s), il tourne un peu (1,6 radian par seconde au plus) vers le tank qu'il a choisi.

🌀 Étape 62 : des bateaux et des portails ✅ livrée · à valider

Un lac avec ta vedette de combat et 2 patrouilleurs ennemis, et 2 paires de portails pour traverser la carte d'un coup. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/62-bateaux-et-portails.md.

  • ✍️ Dans le jeu de tanks.
  • ✍️ Ton bateau ET des bateaux ennemis.
  • Les portails : tu n'as pas choisi, alors j'ai pris 2 paires, ouvertes à tout ce qui roule ou marche.

✅ Ce que tu peux vérifier

  • ☐ Le lac est à l'est (en bleu sur la petite carte), avec 2 patrouilleurs ⚓ qui tirent.
  • ☐ Sors du tank (E), marche jusqu'à la vedette au bord du lac, E : tu montes. Q D pour le canon, Espace pour tirer.
  • ☐ Coule un patrouilleur (3 obus) : il s'enfonce sous l'eau.
  • ☐ Fonce dans le portail bleu (dans ton camp, les ronds de couleur sur la carte) : tu ressors au portail orange !
  • Vérifie « version 3 » en haut de la page du jeu.

🥚 Le lac, un cercle étiré

Le lac est une ellipse : un cercle étiré, 80 m de rayon dans un sens et 185 m dans l'autre. Pour savoir si un point est dans l'eau, le jeu calcule un seul nombre, dl = √((dx ÷ 80)² + (dz ÷ 185)²), où dx et dz sont l'écart au centre du lac. Si dl est plus petit que 1, on est dans l'eau ; égal à 1, sur la rive. Un tank qui entre dans l'eau est ramené sur la rive ; un bateau qui va trop près du bord (dl plus grand que 0,96) s'échoue. Regarde « toi et le lac » sous le capot en marchant vers l'eau.

🌀 Comment marche un portail

🔎 Missions d'exploration

❓ Quiz

Pourquoi on ressort un peu DEVANT le portail de sortie, et pas au milieu ?

Au milieu, on serait déjà à moins de 2,6 m du portail : il nous renverrait aussitôt de l'autre côté !

Pourquoi un bateau tourne mal quand il est arrêté ?

C'est l'eau qui pousse sur le gouvernail : sans vitesse, l'eau ne pousse pas. Le jeu fait tourner le bateau plus vite quand il va vite.

🐋 Étape 63 : sous-marins, îles, un soldat plus réaliste (et ses bugs corrigés) ✅ livrée · à valider

3 îles sur le lac, ton sous-marin et 2 sous-marins ennemis, et un soldat refait avec un vrai squelette. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/63-sous-marins-iles-et-soldat.md.

  • ✍️ Des sous-marins et des îles sur le lac.
  • ✍️ Un personnage plus réaliste.
  • ✍️ Corriger les petits bugs du personnage, « sans me poser de questions ».

✅ Ce que tu peux vérifier

  • ☐ 3 îles sur le lac. Le portail jaune (près du lac) t'emmène sur la grande île.
  • ☐ Ton sous-marin est à côté de la vedette : E pour monter, D plonger, Q remonter, Espace torpille. Regarde la jauge de profondeur à droite.
  • ☐ Quand un sous-marin ennemi « fait surface », tire-lui dessus ! Sous l'eau, seule une torpille le touche.
  • ☐ Ton soldat a des genoux, des coudes, un visage ; il tient son fusil à deux mains ; il nage dans le lac.
  • ☐ Il ne fait plus de petits sauts ; en sortant du tank, la caméra reste dehors.
  • Vérifie « version 4 » en haut de la page du jeu.

🦴 Un squelette dans le soldat

Comme dans les vrais jeux, le soldat a un squelette : des articulations (hanches, genoux, épaules, coudes, cou) qui tournent, et chaque morceau du corps est accroché à une articulation. Pour marcher, on balance les hanches et on plie les genoux. Pour tenir le fusil, c'est l'inverse : on sait où doivent aller les mains, et on calcule où mettre les coudes. Ça s'appelle la cinématique inverse. Le bras et l'avant-bras forment un triangle avec la ligne épaule → main ; on connaît ses 3 côtés, donc on peut trouver l'angle à l'épaule.

🎞️ Le bug des petits sauts : l'interpolation

Le jeu calcule 120 pas par seconde, mais ton écran affiche souvent 60 images par seconde (ou 144…), et pas toujours pile au moment d'un pas. Avant, on dessinait le soldat là où il était au dernier pas : parfois un peu en retard, parfois pas, et ça faisait de tout petits sauts. Maintenant, avant chaque pas, chacun note sa position (« avant »). On dessine alors le soldat entre sa position d'avant et celle de maintenant, au bon pourcentage. Regarde « entre deux pas » sous le capot : c'est ce pourcentage.

🫧 Le sous-marin et la torpille

🔎 Missions d'exploration

❓ Quiz

Pourquoi les soldats lointains sont dessinés plus simplement ?

De loin, on ne verrait pas leurs yeux ni leurs poches. Les dessiner en simple, c'est beaucoup moins de travail pour la carte graphique : le jeu reste fluide.

Pourquoi on ne voit un sous-marin ennemi sur la carte que lorsqu'il est à la surface ?

Parce que sous l'eau, il est caché ! Ses bulles, à la surface, peuvent quand même le trahir…

✈️ Étape 64 : des avions ennemis et des parachutistes ✅ livrée · à valider

Des chasseurs ennemis qui bombardent et qui t'attaquent dans le ciel, une DCA pour les abattre, et des parachutistes pour les deux camps. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/64-avions-ennemis-et-parachutistes.md.

  • ✍️ Les avions ennemis bombardent ET font des duels avec ton Rafale.
  • ✍️ On les abat avec une DCA.
  • ✍️ Des parachutistes pour les deux camps : 6 toutes les 60 s.

✅ Ce que tu peux vérifier

  • ☐ Au bout de 35 s : « ✈️ Avion ennemi en approche ! », puis des bombes sur tes tanks.
  • ☐ La DCA est dans ton camp (le carré blanc sur la carte, devant l'aérodrome) : E pour monter, ← → tourner, ↑ ↓ lever les canons, Espace tirer. Vise le petit rond jaune « tire ! ».
  • ☐ Un chasseur abattu tombe en fumant et s'écrase.
  • ☐ Décolle avec ton Rafale : les chasseurs te prennent en chasse !
  • ☐ Toutes les 60 s, des parachutistes bleus et rouges descendent.
  • Vérifie « version 5 » en haut de la page du jeu.

🦆 Viser devant l'avion

Un chasseur vole à 378 km/h. Si tu tires là où il EST, ton obus arrive… là où il ÉTAIT ! Il faut viser là où il SERA quand l'obus arrivera, comme un chasseur de canards. La visée assistée calcule : temps = distance ÷ vitesse de l'obus (300 m/s), puis position future = position + vitesse de l'avion × temps. Elle recommence une deuxième fois pour être plus précise, et le petit rond jaune montre ce point. En plus, l'obus de DCA éclate tout seul s'il passe à moins de 9 m d'un avion : c'est une « fusée de proximité ».

💣 Le bombardier aussi calcule

Une bombe garde la vitesse de l'avion. Le chasseur ennemi doit donc la lâcher AVANT d'être au-dessus de sa cible : à une distance égale à sa vitesse × le temps de chute, avec temps de chute = √(2 × hauteur ÷ 9,8). Il vise aussi là où ton tank SERA s'il roule. Regarde « largage dans … m » sous le capot. Pour l'éviter : bouge quand tu vois « 💣 Bombardement ! »

🪂 Les parachutistes

🔎 Missions d'exploration

❓ Quiz

Pourquoi la visée assistée fait le calcul deux fois ?

La première fois, on calcule le temps avec la distance d'AUJOURD'HUI. Mais l'avion bouge, donc la distance change un peu. On refait le calcul avec la nouvelle position : c'est plus juste.

Pourquoi abattre l'avion de transport ennemi est malin ?

S'il tombe avant le largage, ses 6 parachutistes ne sautent pas : pas de renforts pour les Rouges !

📢 Étape 65 : donner des ordres en les écrivant ✅ livrée · à valider

Touche T : une barre s'ouvre tout en haut, tu écris ton ordre, et tout ton camp obéit. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/65-donner-des-ordres.md.

  • ✍️ Une barre tout en haut, ouverte avec la touche T, où tu écris tes ordres toi-même.
  • ✍️ Tout ton camp obéit (ou un groupe, ou un tank par son nom).
  • ✍️ Attaque, suis-moi, aller quelque part, viser une cible, formation et tir.
  • ✍️ Les fautes de frappe sont devinées ; sinon, le jeu te le dit.

✅ Ce que tu peux vérifier

  • ☐ T, écris « les tanks, allez au village », Entrée : les 3 tanks y vont.
  • ☐ « suivez-moi », puis roule : tout le monde te suit. Puis « en ligne ».
  • ☐ « Bravo, attaquez Faucon » ; « cessez le feu » ; « feu à volonté ».
  • ☐ Fais exprès une faute : « alez au vilage ». Puis écris « bonjour » : il ne comprend pas.
  • ☐ T puis ↑ : ton dernier ordre revient.
  • Vérifie « version 6 » en haut de la page du jeu.

📖 Comment le jeu « lit » ta phrase

Un ordinateur ne comprend pas le français comme toi. Le jeu fait 3 choses simples :

  1. Nettoyer : « Les TANKS, allez au village ! » devient les tanks allez au village (minuscules, sans accents ni ponctuation), puis il coupe la phrase en mots.
  2. Chercher chaque mot dans un dictionnaire (ordres.mots dans config.js). « tanks » est un QUI, « allez » est un ORDRE, « village » est un ENDROIT. Les mots qu'il ne connaît pas (« les », « au ») sont simplement ignorés.
  3. Ranger : un groupe écrit AVANT l'ordre dit qui obéit (« les soldats, attaquez »). Écrit APRÈS « attaquez » ou « visez », il dit quoi viser (« attaquez les soldats »).

🔤 Deviner les fautes : la distance de Levenshtein

Pour savoir si « vilage » ressemble à « village », le jeu compte combien de lettres il faut ajouter, enlever ou changer pour passer de l'un à l'autre. Ce nombre s'appelle la distance de Levenshtein. « vilage » → « village » : il manque un « l », donc la distance vaut 1. Si la distance est de 1 lettre (ou 2 pour les mots de 7 lettres et plus), il devine. Les tout petits mots (« vous », « les »…) ne sont jamais devinés : sinon « vous » deviendrait « tous » ! Regarde le journal : il écrit les mots devinés.

🎖️ Comment ils obéissent

🔎 Missions d'exploration

❓ Quiz

Quelle est la distance de Levenshtein entre « tank » et « tanks » ?

1 : il suffit d'ajouter un « s ».

Pourquoi « les soldats, attaquez les tanks » et « attaquez les soldats » ne veulent pas dire la même chose ?

Le jeu regarde la PLACE du mot. Avant l'ordre, « les soldats » dit QUI obéit. Après « attaquez », « les soldats » dit QUOI attaquer.

🔇 Étape 66 : plus de son quand tu quittes le jeu ✅ livrée · à valider

Tu changes d'onglet ou d'application : les tanks et le rallye-raid se taisent, et le son revient quand tu reviens.

📋 La demande

Le fichier complet est dans demandes/66-plus-de-son-quand-on-quitte.md.

  • ✍️ « Quand je quitte le site, je ne veux plus qu'il y ait de son. »

✅ Ce que tu peux vérifier

  • ☐ Dans les tanks, avec le son : change d'onglet → silence. Reviens → le son repart.
  • ☐ Pareil dans le rallye-raid.
  • ☐ Sous le capot des tanks : la ligne « le son » et, dans le journal, « 🔇 Le son s'endort ».

👀 Comment le jeu sait que tu es parti

Le navigateur prévient la page. visibilitychange dit « on ne te voit plus » (autre onglet, autre application). blur dit « une autre fenêtre est devant », et focus dit « tu es revenu ». Le jeu écoute ces messages, comme il écoute le clavier. Quand tu pars, il met son synthétiseur en pause (suspend) ; quand tu reviens, il le relance (resume). Le circuit et le premier jeu le faisaient déjà depuis l'étape 29 : les tanks et le rallye avaient été oubliés !

❓ Quiz

Pourquoi le son ne s'arrêtait pas tout seul ?

Parce que le synthétiseur du navigateur continue de jouer tant qu'on ne lui dit pas d'arrêter, même si la page est cachée.

💚 Étape 67 : plus de vie, et elle remonte toute seule ✅ livrée · à valider

Ton soldat tient 20 balles, ton tank 16 obus, et ta vie remonte si tu te mets à l'abri 5 secondes. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/67-plus-de-vie.md.

  • ✍️ Plus de vie pour ton soldat ET ton tank.
  • ✍️ 20 balles pour ton soldat (ton tank : 4 fois plus, 16 obus).
  • ✍️ La vie remonte toute seule.

✅ Ce que tu peux vérifier

  • ☐ En bas à gauche : une barre « 16 / 16 » pour ton tank, « 20 / 20 » pour ton soldat.
  • ☐ Fais-toi toucher, puis cache-toi 5 s : « ➕ soin » apparaît et la barre remonte.
  • Vérifie « version 8 » en haut de la page du jeu.

⏱️ Comment la vie remonte

Chaque soldat et chaque tank a un petit chronomètre, touche : le temps depuis la dernière fois qu'il a été touché. Une balle le remet à 0. Quand il dépasse 5 s, le jeu remplit une petite réserve, soin : +2 par seconde pour ton soldat, +0,5 pour ton tank. Chaque fois que la réserve atteint 1, il la vide et te rend une balle (ou un obus). Une nouvelle balle remet le chronomètre à 0, et tout s'arrête. Regarde sous le capot : « soin dans … s ».

🔎 Missions d'exploration

❓ Quiz

Combien de temps faut-il à ton soldat pour passer de 10 à 20 balles, s'il n'est pas touché ?

5 s d'attente, puis 10 balles à 2 par seconde = 5 s. En tout : 10 secondes.

🌄 Étape 68 : des cartes 3 fois plus grandes, des collines, une rivière et 16 nouvelles voitures ✅ livrée · à valider

Les 5 cartes du circuit 3D sont 3 fois plus grandes. Dans la nouvelle place : des collines, des forêts, une rivière avec des ponts, et de nouvelles voitures dans les garages. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/68-agrandir-la-map.md.

  • ✍️ Le circuit 3D, toutes les cartes, 3 fois plus grand, tout d'un coup.
  • ✍️ Des forêts et des collines, une rivière avec des ponts.
  • ✍️ De nouvelles voitures : plus de circulation ET de nouveaux modèles (allemandes, supercars, françaises, tout-terrain, voitures de rêve).

✅ Ce que tu peux vérifier

  • ☐ « version 28 » en haut de la page du circuit.
  • ☐ Le circuit : un tour fait 4,4 km, et la route passe 2 fois sur un pont au-dessus de la rivière.
  • ☐ Le parcours : 9 fois plus de montées, tremplins, loopings et tunnels, et 3 ponts en bois.
  • ☐ Le grand parcours : le saut du creux marche toujours (50 m).
  • ☐ Les méga-rampes : la piste est 3 fois plus longue, les sauts ont la même taille.
  • ☐ La ville : 7 × 7 pâtés, 45 voitures qui roulent, la campagne autour.
  • ☐ Roule dans la rivière : « 💦 Plouf ! », tu avances au pas (en ville, on ne peut pas : prends un pont).
  • ☐ Les 16 nouvelles voitures dans les garages (← →).

📏 L'élastique : agrandir sans casser les sauts

Pour agrandir une route faite de points, on pourrait tout multiplier par 3. Mais alors le creux de 50 m deviendrait un creux de 150 m : impossible à sauter ! L'étireur (circuit/moteur/etirer.js) fait comme un élastique avec des morceaux en bois : les bouts de route normaux sont étirés × 3, mais les tremplins, les vides à sauter et les plateformes gardent leur taille. Ils sont seulement déplacés, avec leurs trous et leurs bosses. Le grand parcours fait une boucle : avec les morceaux en bois, elle ne se referme plus tout à fait. On répartit ce petit écart sur tous les bouts étirés, chacun selon sa longueur.

  avant :  ──route──[tremplin][ vide 50 m ]──route──
  après :  ────────route × 3────────[tremplin][ vide 50 m ]────────route × 3────────

🧩 Le carrelage : le parcours recopié 9 fois

Le parcours de 700 m devient une tuile, recopiée 3 × 3 fois, comme un carrelage. Pour que les coins ne se ressemblent pas, chaque copie est tournée d'un quart de tour de plus. Pour tourner un point (x, z) d'un quart de tour : le nouveau x vaut −z, et le nouveau z vaut x. La direction d'une montée ou d'un tremplin tourne de 90° en même temps.

⛰️ Les collines et la rivière (le sculpteur)

Le sculpteur (circuit/moteur/campagne.js) fabrique le sol :

🌲 Des milliers d'arbres sans ralentir

Il y a maintenant plus de 1 000 arbres par carte. Les arbres sont rangés par carrés de 700 m, un groupe d'« instances » par carré. La carte graphique ne dessine que les carrés qui sont devant la caméra. Les 500 tirets blancs du circuit sont collés dans une seule forme : un seul dessin au lieu de 500.

🔎 Missions d'exploration

❓ Quiz

Pourquoi le saut du creux n'est-il pas devenu 3 fois plus long ?

Parce que le tremplin et le vide sont des « morceaux en bois » de l'élastique : ils gardent leur taille, ils sont seulement déplacés.

Le parcours est recopié 9 fois. Une tuile a 2 loopings : combien y en a-t-il en tout ?

2 × 9 = 18 loopings.

Pourquoi calcule-t-on la hauteur des collines sur une grille, une seule fois ?

Parce que la calculer à chaque pas de jeu (120 fois par seconde, pour chaque voiture) serait trop lent. Lire 4 points d'une grille et les mélanger, c'est très rapide.

🚘 Étape 69 : les 16 nouvelles voitures redessinées ✅ livrée · à valider

Les 16 voitures de l'étape 68 sont redessinées une par une, avec leurs vraies mesures : la forme, les détails, les roues et l'intérieur. ▶ le circuit 3D

📋 La demande

Le fichier complet est dans demandes/69-voitures-plus-realistes.md.

  • ✍️ Refaire les 16 nouvelles voitures : elles ne sont pas assez réalistes.
  • ✍️ La forme, les détails, les roues et l'intérieur.

✅ Ce que tu peux vérifier

  • ☐ « version 29 » en haut de la page du circuit.
  • ☐ Au garage (← →), chaque voiture a sa forme à elle : les 7 fentes du Wrangler, les « orbites » de la McLaren, la boîte de la Classe G, les facettes d'acier du Cybertruck, les lamelles de la DeLorean…
  • ☐ À travers les vitres : le tableau de bord, l'écran qui brille, les sièges et le conducteur.
  • ☐ L'emblème de chaque marque (les 4 anneaux, l'étoile, le cheval cabré, la chauve-souris…).

✏️ Dessiner une voiture comme au bureau d'études

Une voiture est décrite par des tranches, vues de face, du bout de l'arrière au bout du nez (comme les couples d'un bateau). Pour chaque tranche, on donne 7 nombres : où elle est (x), la hauteur du bas, de l'épaule, du dessus, la largeur de la caisse, la largeur au pied de la vitre et la largeur du toit. Le constructeur fait passer une courbe douce par toutes les tranches : c'est la peau.

        toit (wt)
       ┌──────┐
      ╱        ╲   ← la vitre, presque droite
  ───┘          └───  ← l'épaule (le petit rebord)
  │                │  ← la portière
  └────────────────┘

Avant, il n'y avait pas d'épaule : la vitre partait du bord de la caisse jusqu'au toit, et la cabine ressemblait à une pyramide. Avec l'épaule, elle ressemble à une vraie cabine.

🧩 Des pièces moulées

Un phare posé comme une boîte sur le capot, ça se voit. Maintenant, le phare est une pièce moulée : une petite grille de points posés un par un sur la carrosserie (on demande la hauteur de la peau à chaque point). Il épouse donc le coin arrondi du nez. Pareil pour les prises d'air sur les flancs : elles suivent même les ailes qui gonflent au-dessus des roues.

🔎 Missions d'exploration

❓ Quiz

Combien de nombres faut-il pour décrire une tranche ?

7 : x, le bas, l'épaule, le dessus, la largeur de la caisse, la largeur au pied de la vitre et la largeur du toit (plus quelques réglages, comme l'arrondi du toit).

Pourquoi un phare « moulé » a-t-il l'air plus vrai qu'une petite boîte ?

Parce que chacun de ses points est posé sur la carrosserie : il suit la courbe du nez, comme un vrai phare encastré.

🏁 Étape 70 : toutes les voitures plus réalistes, dans tous les jeux ✅ livrée · à valider

Les 36 voitures du circuit 3D, les 7 véhicules du rallye-raid et les chars et engins des tanks sont redessinés. ▶ le circuit 3D · ▶ le rallye-raid · ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/70-toutes-les-voitures-realistes.md.

  • ✍️ Toutes les voitures, dans tous les jeux.
  • ✍️ Encore plus de détails sur les 16 voitures de l'étape 69.

✅ Ce que tu peux vérifier

  • ☐ Circuit « version 30 » : la 208, la police, le taxi, la F1, le kart, le monster truck… ont leur vraie forme, leur emblème et leur conducteur.
  • ☐ Les 16 de l'étape 69 ont maintenant leurs plaques, leurs répétiteurs orange, leur antenne et des passages de roues noirs.
  • ☐ Rallye-raid « version 3 » : le Hilux avec ses roues de secours dans la benne, le Kamaz avec ses 6 phares, les motos avec leur tour de navigation.
  • ☐ Tanks « version 9 » : les chenilles qui défilent autour des galets, le chef de char qui sort la tête, le Humvee avec son tireur.

✏️ La silhouette : 5 lignes au lieu de 50 nombres

À l'étape 69, chaque tranche d'une voiture était écrite à la main (7 nombres par tranche, 14 tranches : presque 100 nombres !). Pour refaire 20 voitures, il fallait plus simple. Un designer dessine une voiture avec quelques lignes : le profil (vu de côté), la ceinture (où commencent les vitres), la largeur (vue de dessus), la largeur du toit et le bas. L'outil silhouette lit ces 5 lignes et fabrique tout seul une tranche tous les 20 cm.

🔩 Souder les pièces

Un char a maintenant des centaines de pièces (galets, boulons, patins de chenille…). Si la carte graphique devait les dessiner une par une, le jeu ralentirait. Alors, une fois le char fini, on soude toutes les pièces de la même matière en une seule : le jeu des tanks dessine maintenant environ 270 objets par image au lieu de 700, et le rallye-raid 390 au lieu de 780, alors qu'il y a plus de détails !

🔎 Missions d'exploration

❓ Quiz

Pourquoi souder les pièces rend-il le jeu plus rapide ?

Parce que la carte graphique dessine un objet à la fois : 1 grosse pièce soudée, c'est 1 dessin au lieu de 100.

Combien de lignes faut-il pour décrire une voiture avec la silhouette ?

5 : le profil, la ceinture, la largeur, le toit et le bas.

🏍️ Étape 71 : des motos, un quad, un camion et une carte des tanks 3 fois plus grande ✅ livrée · à valider

Deux motos dans les garages du circuit 3D (la Honda CRF450R et la Montesa Cota de trial), et dans les tanks : une moto cross, un quad à mitrailleuse et un camion de 6 soldats pour les deux camps, sur une carte de 2,1 km. ▶ le circuit 3D · ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/71-motos-et-nouveaux-vehicules.md.

  • ✍️ Une moto cross, « un peu une Honda », dans le parcours, le grand parcours et la ville.
  • ✍️ Une moto de trial dans le jeu de voitures 3D.
  • ✍️ Dans les tanks : la moto cross pour tout le monde, un quad, un camion de 6 soldats, pour les deux camps.
  • ✍️ Une carte des tanks plus grande : 5 fois d'abord, puis, après l'étape 72 (les lags), 3 fois (2 100 m de côté au lieu de 700 m).

✅ Ce que tu peux vérifier

  • ☐ Circuit « version 32 » ou plus : dans les garages du parcours, du grand parcours et de la ville, « La moto cross Honda CRF450R » (rouge, 120 pièces) et « La moto de trial Montesa Cota » (90 pièces).
  • ☐ Le pilote est debout sur les cale-pieds, avec un casque de cross.
  • ☐ Les roues ont des rayons, comme les vraies.
  • ☐ Dans un virage, la moto penche : plus tu vas vite, plus elle penche.
  • ☐ La trial est moins rapide mais tourne mieux et saute plus haut.
  • ☐ Tanks « version 11 » : la mini-carte montre une carte bien plus grande, avec 2 hameaux en ruines et de grandes forêts.
  • ☐ Sors du tank (E) : la moto, le quad et le camion sont garés à côté du 4x4. E pour monter, Espace pour tirer (pistolet sur la moto, mitrailleuse sur le quad).
  • ☐ Dans le camion, F fait descendre tes 6 soldats.
  • ☐ Les camions de l'ordinateur vont au front et déposent leurs soldats : « 🚛 Camion … décharge 6 soldats » dans le journal.

🏍️ Pourquoi une moto penche

Une vraie moto ne tourne pas comme une voiture : le pilote la penche vers l'intérieur du virage, sinon il tomberait vers l'extérieur. Dans le jeu, l'angle dépend de 2 choses : combien tu tournes le guidon, et ta vitesse. À l'arrêt, elle reste droite. L'angle maximum est dans circuit/config.js : motos: { inclinaison: 0.45 } (0,45 radian, environ 26°).

🚛 Le camion de l'ordinateur : une machine à états

Le camion de l'ordinateur suit toujours le même cycle, comme un bus sur sa ligne :

🏠 au camp, plein (6 soldats) ──▶ 🚛 roule vers le front ──▶ 🪂 décharge (un soldat à la fois)
       ▲                                                              │
       └────────── ⏳ se remplit 15 s ◀── 🔙 rentre au camp, vide ◀───┘

Pour tourner, la moto, le quad et le camion suivent la règle du vélo : plus les roues avant sont braquées et plus on va vite, plus on tourne ; et plus l'engin est long, moins il tourne court. C'est pour ça que le camion fait de grands virages.

🔎 Missions d'exploration

❓ Quiz

Pourquoi la moto ne penche-t-elle pas à l'arrêt ?

Parce que l'angle est multiplié par la vitesse : à 0 km/h, il vaut 0.

Combien de rayons a une roue de moto du jeu ?

36, croisés comme sur une vraie roue de cross.

Que fait le camion de l'ordinateur une fois vide ?

Il rentre au camp, se remplit pendant 15 secondes, puis repart vers le front.

⚡ Étape 72 : plus de lags ✅ livrée · à valider

Le circuit 3D, le rallye-raid et les tanks règlent tout seuls leur qualité pour rester fluides, même sur les grandes cartes. ▶ le circuit 3D · ▶ le rallye-raid · ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/72-plus-de-lags.md.

  • ✍️ « Ça rame trop, le jeu a des lags. Arrange ça et fais en sorte qu'il n'y en ait plus. »
  • ✍️ Dans les 3 jeux 3D ; surtout sur les grandes cartes, mais tout le temps.

✅ Ce que tu peux vérifier

  • ☐ Circuit « version 33 », rallye-raid « version 5 », tanks « version 10 ».
  • ☐ Dans le rallye-raid et les tanks, la touche G choisit le niveau à la main (auto → 0 → 1 → 2 → 3 → auto).
  • ☐ Dans le circuit, en bas à gauche : « ⚙️ qualité n/3 · X i/s » (images par seconde).
  • ☐ Sur la ville et le grand parcours, le jeu reste fluide.
  • ☐ Sous le capot : « qualité automatique (étape 72) », et dans le journal : « ⚙️ Qualité … » quand le niveau change.
  • ☐ Les voitures, les routes et les maisons ont exactement la même allure qu'avant.

⏱️ Un lag, c'est quoi ?

Un jeu, c'est un dessin animé : l'ordinateur dessine environ 60 images par seconde. Il a donc 16 millisecondes (ms) pour dessiner chaque image. S'il lui en faut 40, il ne dessine plus que 25 images par seconde : ça saccade, c'est un lag.

🎚️ Le régulateur de qualité

Toutes les 2 secondes, le jeu chronomètre ses images, comme le régulateur de vitesse d'une voiture :

Il y a 4 niveaux : très léger, léger, moyen et beau. Un ordinateur puissant reste en « beau », un petit ordinateur descend en « léger ». Pour ne pas faire le yo-yo, un niveau trop lent est interdit pendant 60 secondes.

🔍 Moins de détails au loin

Une voiture à 300 m fait 3 pixels à l'écran : inutile de dessiner ses rétroviseurs et ses boulons ! Au loin, le jeu cache les petits détails et ne garde que la caisse et les roues. Seules les voitures les plus proches sont dessinées en détail, et la tienne l'est toujours.

🔥 Le soudeur

Pour la carte graphique, chaque pièce est un dessin à faire. Le soudeur colle ensemble toutes les pièces du décor qui ne bougent pas et qui ont la même allure (même image, même couleur). En ville, cela fait environ 300 dessins par image au lieu de 850, dans le rallye-raid 200 au lieu de 440, et dans les tanks 250 au lieu de 860. Dans les tanks, les règles calculent aussi presque 4 fois plus vite : chaque soldat ne regarde plus les 400 arbres un par un, mais seulement ceux de sa case (le quadrillage, tanks/moteur/grille.js).

AVANT :  trottoir + trottoir + trottoir + … (500 pièces) → 500 dessins
APRÈS :  [ tous les trottoirs soudés ]                   →   1 dessin

🔎 Missions d'exploration

❓ Quiz

Combien de millisecondes a l'ordinateur pour dessiner une image à 60 images par seconde ?

1000 ÷ 60 ≈ 16 ms.

Pourquoi le régulateur attend-il 2 mesures rapides avant de remonter ?

Pour être sûr que l'ordinateur a vraiment de la marge, et ne pas changer de qualité sans arrêt (le yo-yo ferait lui-même des saccades).

Pourquoi ne soude-t-on pas les fenêtres qui s'allument ?

Parce que leur lumière change pendant le jeu : soudées, elles s'allumeraient toutes en même temps.

🚁 Étape 73 : des hélicoptères de transport dans les tanks ✅ livrée · à valider

Un Chinook et un Black Hawk pour toi et pour chaque camp : 10 soldats à bord, 2 mitrailleuses de porte, et la descente à la corde. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/73-helicopteres-de-transport.md.

  • ✍️ Les deux modèles : le Chinook (2 rotors, rampe à l'arrière) et le Black Hawk (1 rotor, portes sur les côtés).
  • ✍️ Pour les deux camps : toi tu pilotes, l'ordinateur amène des soldats au front.
  • ✍️ 10 soldats et 2 mitrailleuses qui tirent toutes seules.
  • ✍️ Les soldats descendent à la corde.

✅ Ce que tu peux vérifier

  • ☐ Tanks « version 12 ».
  • ☐ Le Chinook et le Black Hawk sont garés à l'ouest de ton aérodrome : E pour monter.
  • ☐ Q monter, D descendre, flèches pour avancer et tourner.
  • ☐ Descends sous 25 m, freine presque à l'arrêt, puis F : les 10 soldats glissent le long de 2 cordes.
  • ☐ Trop haut ou trop vite ? Un message te le dit.
  • ☐ Les mitrailleuses de porte tirent toutes seules sur les ennemis à moins de 120 m.
  • ☐ Journal : « 🚁 Chinook rouge dépose 10 soldats à la corde ».

🪢 Pourquoi « bas et presque arrêté » ?

Une vraie corde de descente fait environ 25 m. Si l'hélico est plus haut, la corde ne touche pas le sol ; s'il avance, les soldats se balancent et tombent. Le jeu vérifie donc 2 conditions avant d'envoyer un soldat : la hauteur (moins de 25 m) ET la vitesse (moins de 11 km/h). C'est un « ET » : il faut les deux en même temps.

🔫 La mitrailleuse qui vise toute seule

Chaque tireur de porte surveille son côté (75° de chaque côté de sa porte). Plusieurs fois par seconde, il cherche l'ennemi le plus proche à moins de 120 m dans son secteur, tourne son arme vers lui et tire. Sous le capot, tu vois la cible de chaque mitrailleuse.

🔎 Missions d'exploration

❓ Quiz

Quelles sont les 2 conditions pour la descente à la corde ?

Être à moins de 25 m du sol ET aller à moins de 11 km/h.

Pourquoi le deuxième hélico pose-t-il parfois seulement 1 ou 2 soldats ?

Parce qu'un camp ne peut pas avoir plus de 30 soldats debout en même temps : quand il est plein, l'hélico rentre au camp.

🎨 Étape 74 : 60 soldats, et des tanks bien plus beaux ✅ livrée · à valider

Les hélicos, les soldats et tout le décor des tanks sont redessinés, et chaque camp peut avoir 60 soldats debout. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/74-plus-beau-et-60-soldats.md.

  • ✍️ 60 soldats debout par équipe au lieu de 30.
  • ✍️ Refaire les hélicos, les soldats, le décor et les photos.
  • ✍️ Le plus beau possible, même si c'est plus lourd.

✅ Ce que tu peux vérifier

  • ☐ Tanks « version 13 ».
  • ☐ Le Chinook : fuselage arrondi, hublots ronds, réservoirs sur les côtés, rampe ouverte sur une soute avec des bancs rouges.
  • ☐ Le Black Hawk : portes ouvertes avec des passagers assis, tireurs aux portes.
  • ☐ Les soldats : casque, lunettes, gilet à poches, sac, genouillères, visage. À la corde, ils tiennent la corde à deux mains.
  • ☐ Le sol : herbe nuancée, terre, chemins, sable au bord du lac, touffes d'herbe qui bougent au vent.
  • ☐ Sous le capot : « la limite (étape 74) : 60 soldats » et « le sol (étape 74) ».

🗺️ Une seule grande image pour tout le sol

Avant, le sol avait partout la même couleur. Maintenant, au démarrage, le jeu peint une image de toute la carte (2048 × 2048 points, environ 1 point par mètre) : de l'herbe ici, de la terre là, un chemin entre les camps, du sable au bord du lac. Puis il la pose sur le sol comme un grand tapis.

Mais de près, 1 point par mètre, c'est flou ! Alors on ajoute une 2e image toute petite (des brins d'herbe et des cailloux), répétée tous les 3,6 m. Elle s'efface au loin, là où on n'en a plus besoin.

🦴 Un soldat en « chair et os »

Avant, un soldat était fait d'une vingtaine de pièces séparées : 20 dessins pour la carte graphique. Maintenant, c'est une seule peau posée sur un squelette : quand un os bouge (le bras), la peau autour bouge avec lui. C'est comme ça que sont faits les personnages des vrais jeux vidéo. Résultat : un soldat plus beau qui ne coûte que 2 ou 3 dessins.

🔎 Missions d'exploration

❓ Quiz

Pourquoi ajoute-t-on une petite image répétée sur le sol ?

Parce que la grande image a seulement 1 point par mètre : de près, ce serait flou. La petite image ajoute les détails (brins d'herbe, cailloux).

Pourquoi un soldat en une seule peau est-il plus rapide à dessiner ?

Parce que la carte graphique fait 1 dessin pour la peau au lieu de 20 pour les pièces séparées.

🏚️ Étape 75 : de beaux tanks, des maisons qu'on peut détruire, des grenades ✅ livrée · à valider

Tous les tanks sont repeints en camouflage, les maisons se cassent morceau par morceau, et tu peux lancer des grenades. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/75-tanks-maisons-destructibles-grenades.md.

  • ✍️ Tous les tanks, le plus beau possible.
  • ✍️ « Si tu tires sur une maison ou une autre structure avec un tank ou une mitraillette, tu fais des dégâts. Cela se détruit, et je veux que ce soit un peu réaliste. »
  • ✍️ Des grenades dans les armes.

✅ Ce que tu peux vérifier

  • ☐ Tanks « version 14 ».
  • ☐ Les tanks bleus ont un camouflage forêt, les rouges un camouflage désert, avec de la boue en bas et un numéro sur la tourelle.
  • ☐ Mitrailleuse sur une maison : des trous de balles apparaissent.
  • ☐ Un obus de tank : un gros trou, des briques qui volent, de la poussière.
  • ☐ Après plusieurs obus, le toit s'effondre : « 🏚️ Une maison s'effondre » dans le journal.
  • ☐ Un tank lancé vite défonce un mur.
  • ☐ À pied, touche 4 (grenades), Espace pour lancer : elle rebondit et explose après 3 s. Tu en as 4, et tu en regagnes 1 toutes les 25 s.

🧱 Un mur fait de morceaux

Chaque mur est découpé en morceaux de 1,6 m × 2,8 m (environ 4 800 sur toute la carte). Chaque morceau a ses points de vie :

avant :  ▓▓▓▓▓▓      1 obus :  ▓▓  ▓▓      6 obus :  (toit par terre)
         ▓▓▓▓▓▓                ▓    ▓               ░░▓░░▓░  gravats

Les balles, les obus et les regards des soldats passent par les trous et les fenêtres, mais pas à travers un mur entier. Un mur te protège donc d'une explosion qui a lieu de l'autre côté.

💣 La grenade : une balle qui rebondit

Une grenade, c'est un petit objet qui suit la gravité : à chaque pas, elle avance et elle tombe un peu plus vite. Quand elle touche le sol ou un mur, elle rebondit en perdant de la vitesse, puis elle roule. Un compte à rebours de 3 secondes commence au lancer. À 0, elle explose.

🔎 Missions d'exploration

❓ Quiz

Pourquoi découpe-t-on un mur en morceaux ?

Pour qu'un tir enlève seulement le morceau touché : on peut alors faire un trou au bon endroit, au lieu de détruire tout le mur d'un coup.

Quand le toit d'une maison s'effondre-t-il ?

Quand 36 % des morceaux de ses murs sont tombés, ou après 3 coups directs sur le toit.

✈️ Étape 76 : les avions et le Tigre redessinés ✅ livrée · à valider

Le Rafale, les chasseurs ennemis, l'avion de transport, le drone et l'hélicoptère Tigre sont refaits, le plus beau possible. ▶ les tanks

📋 La demande

Le fichier complet est dans demandes/76-avions-et-tigre.md.

  • ✍️ « Refais aussi les avions et le tigre. »
  • Comme aux étapes 74 et 75 : le plus beau possible, et une version simple de loin. Les règles du jeu ne changent pas.

✅ Ce que tu peux vérifier

  • ☐ Tanks « version 15 ».
  • ☐ Le Rafale : au sol, sa verrière est ouverte ; en vol, le train rentre ; à fond, la flamme de la postcombustion sort des tuyères ; ses missiles disparaissent un par un quand tu tires.
  • ☐ Le Tigre : nez fin, 2 places l'une derrière l'autre, canon sous le nez, roquettes et missiles sur les petites ailes.
  • ☐ Les chasseurs ennemis ont 2 dérives et des étoiles rouges.
  • ☐ L'avion de transport ouvre sa rampe avant de larguer les parachutistes.
  • ☐ Le drone a 4 hélices et lâche ses grenades une par une.

🛩️ Une aile, ce n'est pas une planche

Coupe une vraie aile d'avion en tranches : chaque tranche a une forme de goutte allongée, bombée dessus, plus plate dessous. C'est ce qu'on appelle un profil. Le nouvel outil aile() fabrique une aile en posant des profils les uns à côté des autres, de plus en plus petits vers le bout. C'est pour ça que les ailes ont maintenant un bord d'attaque arrondi et un bord de fuite fin.

🎨 Un camouflage sans couture

Avant, le camouflage était une image collée sur chaque pièce : entre deux pièces, les taches ne se raccordaient pas. Maintenant, c'est la carte graphique qui calcule la couleur à partir de la position dans l'espace de chaque point de l'avion. Deux pièces qui se touchent ont donc la même couleur au même endroit, et les taches continuent d'une pièce à l'autre.

🔎 Missions d'exploration

❓ Quiz

Pourquoi dessiner un avion en « version simple » quand il est loin ?

Parce qu'à 500 m il fait quelques pixels à l'écran : 600 triangles suffisent au lieu de 46 000, et le jeu reste fluide.

Comment le camouflage fait-il pour ne pas avoir de couture ?

La couleur est calculée à partir de la position dans l'espace : deux pièces qui se touchent ont la même couleur au même endroit.

🏘️ Le village : un projet à part

Le troisième jeu de Maxance est un jeu de gestion façon The Settlers, sans combat. Il a son propre carnet, ses propres demandes et ses propres numéros d'étapes, pour ne pas se mélanger avec le circuit.

▶ Jouer

Le village : sur ordinateur ou sur téléphone (au doigt, en plein écran).

📓 Le carnet du village

Le carnet du village : les étapes 1 à 59 (de la carte jusqu'à la fusée, avec la réserve, les pubs, le placement au doigt, les villageois, les bâtiments animés, l'élevage et le bonheur), avec les missions et les quiz.

🌐 La Mégalopole : un projet à part

Le jeu de ville de Maxance, façon SimCity : on trace les routes, on peint des zones (habitation, commerce, industrie, agriculture), et la ville pousse toute seule quand ses habitants sont contents. Il a son propre carnet et ses propres étapes.

▶ Jouer

La Mégalopole : sur ordinateur ou sur téléphone.

📓 Le carnet de la Mégalopole

Le carnet de la Mégalopole : l'étape 1 (une ville qui pousse toute seule : la demande R C I A, la croissance, les réseaux, la valeur du terrain) , l'étape 2 (les impôts et les coûts : un impôt par zone, un budget par service, la banque, 3 difficultés), l'étape 3 (un guide de 9 missions, et tracer au doigt sur téléphone), l'étape 4 (le fantôme et l'aimant : bâtiments et lots de zone collés à la route), l'étape 5 (déplacer au doigt, de beaux bâtiments, la mer, les rivières et les forêts), l'étape 6 (calques par-dessus la ville, l'icône des missions, la couverture des services, des bâtiments plus réalistes), puis les étapes 7 à 16 (interface allégée, eau courante, nouvelles centrales, eau et déchets, la liste « pour grandir », des services en places, un quartier qui attire, des services plus gros), les étapes 17 et 18 (améliorer les bâtiments, le laboratoire 🔬, une valeur du terrain atteignable), les étapes 19 et 20 (des objectifs 🏆, des monuments 🗽, et des problèmes à régler 🔥), avec les missions et les quiz.

🗺️ La route vers un jeu façon Minecraft

Chaque étape ajoute une fonctionnalité au jeu ET une grande idée sur le fonctionnement interne des jeux. L'ordre peut changer : c'est Maxance qui décide !

1

Courir, sauter, esquiver ✅ fait

Un héros, des obstacles, un score et un record.

Tu apprends : boucle de jeu, entrées, physique, collisions, machine à états, événements, première base de données. Durée : 1 à 2 séances.

2

Un monde en blocs ✅ fait · à valider

Le sol devient une grille de blocs, avec des trous, des plateformes et des drapeaux. Le monde est sans fin et la caméra suit le héros.

Tu apprends : ranger un monde dans un tableau à 2 dimensions, trouver sa case par une division, coordonnées « monde » et « écran », caméra, collisions avec une grille, tronçons et graine. Durée : 2 séances.

3

Solide ou liquide ✅ fait · à valider

Caisses, murets et tours deviennent solides (on monte dessus, par le côté c'est un mur). Des mares de lave apparaissent : liquides et mortelles.

Tu apprends : propriétés des blocs (solide, liquide), ranger les obstacles dans la grille, « changer une règle » ou « réparer un bug ». Durée : 1 séance.

4

5 vies et fosses de lave ✅ fait · à valider

5 cœurs. Trou → retour devant le trou, lave → retour au drapeau, plus de vie → retour à zéro. Une fosse de lave tous les 30 blocs.

Tu apprends : compteur en mémoire vive, décisions « si… alors… sinon », chercher une case en parcourant la grille, cache du navigateur et numéros de version. Durée : 1 séance.

5

Attention au bois ! ✅ fait · à valider

Caisses et murets en bois : mortels (1 vie, retour au drapeau). Seules les tours en pierre sont sans danger.

Tu apprends : décrire les blocs par des propriétés (solide, mortel), changer le jeu en changeant une donnée, ajuster une règle après l'avoir testée. Durée : 1 séance.

6

Pseudo, arrivée et classement ✅ fait · en ligne à venir

Un pseudo avant de jouer, une arrivée au drapeau n° 10, et les 10 meilleurs joueurs (blocs, puis vies, puis temps). Pour l'instant sur cet ordinateur ; en ligne quand le serveur sera prêt.

Tu apprends : trier une liste avec une fonction de comparaison, formulaire et case de texte, sécurité des textes tapés par les joueurs, pourquoi il faut un serveur pour partager des données. Durée : 1 à 2 séances.

7

Les flammes de la lave ✅ fait · validé

Le héros brûle 1 seconde sur place, avec une trentaine de flammes qui s'éteignent en 2 secondes.

Tu apprends : les particules (des petits objets qui naissent, bougent et meurent), l'âge et la couleur, une « pause » dans les règles. Durée : 1 séance.

8

Demi-tour, bras levés et squelette ✅ fait · à valider

Le héros se retourne quand il recule, lève les bras dans les trous, et devient un squelette qui danse 5 s sur les murets à pics. Caisses et tours sans danger.

Tu apprends : retourner un dessin avec un miroir (scale(-1, 1)), animations en boucle avec le reste de la division (%), un nouveau type de bloc. Durée : 1 séance.

9

Un muret tous les 50 blocs ✅ fait · à valider

6 murets à pics à des rendez-vous fixes (50, 100, 150, 200, 250, 300), plus aucun au hasard.

Tu apprends : rendez-vous fixes ou hasard, réserver une place avant de fabriquer, effets de bord d'un changement. Durée : ½ séance.

10

Lacs de lave et inventaire ✅ fait · à valider

3 lacs de lave infranchissables, une plateforme haute au-dessus, et 10 blocs de brique à poser en sautant (touche P).

Tu apprends : modifier la grille pendant le jeu, choisir une case avec un arrondi, concevoir un niveau qu'on ne peut pas « tricher ». Durée : 1 à 2 séances.

11

Épée, monstres, bouclier et potion ✅ fait · à valider

3 monstres de 30 PV gardent le chemin ; épée (T), bouclier (3 coups), potion (H), 20 PV, armure rigolote.

Tu apprends : combat en temps réel avec des minuteurs, hasard dans un combat, PV et vies, un « arbitre » séparé du dessin. Durée : 2 séances.

12

1 000 blocs, fer et pioche ✅ fait · à valider

Arrivée au bloc 1 000 (10 monstres), épée qui s'use, fer tous les 20 blocs à casser avec la pioche (F) pour réparer (R).

Tu apprends : compteurs d'usure, comparer des fractions, rendez-vous réguliers et conflits de place. Durée : 1 à 2 séances.

13

Grottes, charbon, cochons et cuisine ✅ fait · à valider

4 grottes à escaliers, du charbon à piocher, des cochons, une recette (K) et des repas (M) ; la pioche s'use.

Tu apprends : une caméra qui monte et descend, creuser un niveau dans la grille, une petite intelligence artificielle, une recette. Durée : 2 séances.

14

100 blocs pour construire ✅ fait · à valider

100 briques (sac rempli à chaque drapeau), un clic de souris pour poser à 4 blocs au plus, F pour reprendre, rien près des monstres.

Tu apprends : transformer un clic en case de la grille, mesurer une distance (Pythagore), une liste de règles qui dit « oui » ou « non, parce que… ». Durée : 1 séance.

15

Pistolets, hache, épée dorée et armure ✅ fait · à valider

Une barre d'inventaire (touches 1 à 9), 3 pistolets aux balles infinies, une hache qui casse les caisses, une épée dorée et une armure en fer (5 fers).

Tu apprends : un catalogue de fiches au lieu d'une règle par arme, un compte à rebours, la vie d'un projectile, une soustraction pour se protéger. Durée : 2 séances.

16

Musique et bruitages ✅ fait · à valider

Une musique rétro, des pas sur l'herbe, le bois et la pierre, « boom, bring » au saut, tir, épée, monstre et lave. J et B pour couper.

Tu apprends : fréquence, forme d'onde et enveloppe, une partition et un séquenceur, déclencher un son avec un événement. Durée : 1 séance.

17

Pelle, casser les blocs et mitrailleuse ✅ fait · à valider

Pelle, hache et pioche cassent les blocs au clic (le bon outil en 1 clic), les blocs cassés vont dans le sac. Une mitrailleuse de 50 balles, et du butin sur les monstres.

Tu apprends : une table « outil → blocs », une fiche qui se souvient des clics, un compteur de munitions, le hasard en deux temps. Durée : 1 à 2 séances.

18

Un cri et une batterie ✅ fait · à valider

Un cri de surprise dans les trous, et une batterie « tac-tac-tac » quand le squelette danse sur un muret.

Tu apprends : une fréquence qui monte puis descend, une batterie faite de 3 sons, préparer des sons à l'avance. Durée : ½ séance.

19

Le Magnum et le bazooka ✅ fait · à valider

Un Magnum qui recule (le héros gesticule, l'écran tremble) et un bazooka à roquettes explosives, rechargé en minant de la pierre.

Tu apprends : action et réaction (le recul), une zone d'effet autour d'un point, un tremblement qui ne touche que le dessin, fabriquer avec un compteur. Durée : 1 à 2 séances.

20

Cliquer sur la barre ✅ fait · à valider

Un clic sur une case de la barre prend l'objet en main ; la case survolée s'éclaire et montre son nom.

Tu apprends : savoir si un point est dans un rectangle, partager une même mesure entre le peintre et les règles. Durée : ½ séance.

21

Mitrailleuse infinie et rechargement ✅ fait · à valider

La mitrailleuse est infinie ; le héros recharge le bazooka avec une roquette prise dans son dos.

Tu apprends : une animation en plusieurs temps, l'interpolation, les petites erreurs d'arrondi des ordinateurs. Durée : ½ séance.

22

Cinq nouvelles armes à feu ✅ fait · à valider

Fusil à pompe, sniper, laser, lance-flammes et pistolet à eau, avec douilles, éclairs, bruits et rechargements.

Tu apprends : vitesse horizontale et verticale, le lancer de rayon, la gravité et les rebonds, un chargeur (compteur qui se remplit). Durée : 2 séances.

24

Un héros de 2 blocs ✅ fait · à valider

Le héros mesure 2 blocs, saute plus haut, se baisse avec S ; ses armes grandissent avec lui. Toutes les armes ont un tir illimité.

Tu apprends : agrandir un dessin avec une échelle, ce qu'une taille change dans les règles, vérifier la place avant de bouger. Durée : 1 séance.

25

Dragons, grottes à conquérir, miner avec T ✅ fait · à valider

Un dragon mutant de 500 PV tous les 100 blocs, des monstres dans les grottes qu'on peut conquérir, un coffre en récompense, et T pour miner.

Tu apprends : zone de vue et laisse, une petite intelligence artificielle, un point de retour qui change, des règles essayées dans un ordre. Durée : 2 séances.

26

La caméra qui monte ✅ fait · à valider

La caméra suit le héros vers le haut quand il grimpe, et revient à sa place quand il redescend.

Tu apprends : garder un objet entre deux limites, des coordonnées négatives. Durée : ½ séance.

27

Un monde sur mesure, et tirer à couvert ✅ fait · à valider

Trous, lave, plateformes et zone du dragon réglés pour le héros de 2 blocs ; tirer par-dessus un bloc et être protégé derrière.

Tu apprends : les métriques d'un niveau (des mesures qui vont ensemble), vérifier une case avant de tirer, la couverture. Durée : 1 séance.

28

Arbres, portes et escaliers ✅ fait · à valider

Des arbres à couper pour le bois, des portes qui ne s'ouvrent que pour le héros, des escaliers qu'on monte en marchant, et plus de limite pour construire.

Tu apprends : un objet fait de plusieurs cases, deux règles de solidité, monter une marche, des lignes négatives. Durée : 2 séances.

29

Le monde à ta taille ✅ fait · à valider

Caisses, tours, murets, cochons, monstres et arbres à la taille du héros de 2 blocs ; un zoom (V) ; le son qui s'endort quand on regarde ailleurs et qui ralentit au ralenti ; Entrée pour poser un bloc en sautant.

Tu apprends : les métriques d'un niveau, le zoom (agrandir le dessin et diviser la souris), un objet cassé morceau par morceau, les événements de la fenêtre, une touche pour deux actions. Durée : 2 séances.

30

L'arme dans le dos, et les lasers ✅ fait · à valider

L'arme se range dans le dos pendant un saut ou contre un mur, et ressort à l'atterrissage ; un petit saut pour tirer par-dessus un mur ; une pose de soldat dans l'escalier ; des lasers verts ; un bruit de science-fiction.

Tu apprends : une machine à états pour un objet, se souvenir de l'état d'avant, interpolation et rotation d'un dessin, trouver un bug de dessin. Durée : 2 séances.

31

Le carrefour et la voiture ✅ fait · à valider

Après le dragon du bloc 100, on choisit : sous terre (lave et minerais), dans le ciel (planches), ou tout droit sur la route, en voiture, avec de l'essence.

Tu apprends : un monde qui dépend d'un choix, fabriquer selon un mot rangé en mémoire, un véhicule qui réutilise la physique du héros, un compteur d'essence. Durée : 3 séances.

32

Un nouveau jeu : le circuit 3D ✅ fait · à valider

Une voiture sur un circuit ovale, en 3D : 3 tours, un chrono, des records, 3 caméras.

Tu apprends : tout est fait de triangles, x y z, caméra et perspective, matrices, avancer en biais avec cos et sin, portes invisibles anti-triche. Durée : 2 séances.

33

Un circuit 3 fois plus grand ✅ fait · à valider

Lignes droites de 360 m, virages de 120 m de rayon : un tour fait 1 474 m. Le terrain, les sapins, la brume et la mini-carte suivent.

Tu apprends : tout calculer à partir de quelques réglages, la longueur d'un tour (périmètre), la brume, l'échelle d'une carte. Durée : 1 séance.

34

Une voiture adverse ✅ fait · à valider

Une voiture bleue, conduite par l'ordinateur à 140 km/h, qui change de voie pour doubler. Les voitures se cognent. Si elle finit avant toi : perdu !

Tu apprends : une intelligence artificielle simple (la carotte), réutiliser le même code pour deux voitures, détecter un choc avec des cercles, faire rebondir, calculer qui est devant. Durée : 2 séances.

35

Le bruit du moteur ✅ fait · à valider

Un gros moteur grave qui monte avec la vitesse, la voiture bleue qu'on entend selon la distance, « BOUM », « chhhh » et les bips du départ.

Tu apprends : fréquence et hertz, synthétiseur (formes de vibration, filtre, tremblement), volume selon la distance, panoramique gauche-droite. Durée : 1 séance.

36

Le garage, 5 voitures et les pièces ✅ fait · à valider

Un garage au début, 5 voitures (la Rouge, Lamborghini, Porsche, Bugatti, Formule 1), chacune avec sa forme, sa vitesse et son bruit. 50 pièces par course pour les acheter.

Tu apprends : décrire des objets avec des fiches de données, sculpter en 3D avec des tranches, une marche au hasard, un porte-monnaie dans la base de données. Durée : 3 séances.

37

Choisir sa carte, et le parcours ✅ fait · à valider

Un menu des cartes, et une map plate avec montées, tremplins, loopings, tunnels, pièces partout et cartons. Un garage par carte : 4x4, pickup, buggy, monster truck.

Tu apprends : un relief fait de blocs et de pentes, sol ou mur, la gravité et la parabole, un looping avec cos et sin, des objets qui volent. Durée : 3 séances.

38

La ville ✅ fait · à valider

Des immeubles, un parc, des feux rouges, des voitures qui circulent, des pièces cachées ; ton personnage qui descend de la voiture (E) pour en prendre une autre. Un garage : citadine, SUV, voiture basse, camionnette, camion.

Tu apprends : une ville en grille, des voitures qui circulent toutes seules, un personnage qui marche, des missions. Durée : plusieurs séances.

39

Le grand parcours ✅ fait · à valider

Une route comme un circuit Carrera : montées, descentes, ponts, grande rampe, plateforme à trous et à bosses, nitros, saut du creux. Nouveaux véhicules : rallye, quad, taxi, police, kart.

Tu apprends : une courbe qui passe par des points, une route en morceaux, un monde à étages, une poussée (nitro), la parabole d'un saut. Durée : 3 séances.

40

Les méga-rampes ✅ fait · à valider

Une piste en bois dans le ciel, aux bords relevés : motos à doubler, sauts, nitros, drapeaux, barre de dégâts, chrono et record.

Tu apprends : un outil partagé (le ruban), des points de contrôle, une barre de dégâts, un record dans la base de données. Durée : 2 séances.

41

La ville géante : ponts, aéroports, motos et magasins ✅ fait · à valider

La ville sur une île, 2 ponts suspendus, 3 îles-aéroports avec un parking plein de véhicules, des motos et 7 magasins.

Tu apprends : un repère local (un plan qu'on tourne et qu'on pose), un pont en arc avec sinus, interdire la mer, un magasin et un inventaire. Durée : 3 séances.

42

Les petits boulots ✅ fait · à valider

Livreur de pizzas, chauffeur de taxi, vendeur au magasin, ramasser les poubelles : des pièces à gagner en travaillant.

Tu apprends : des missions (une liste de choses à faire), un chrono, une flèche qui montre le chemin. Durée : 2 séances.

43

Les avions, les hélicos et l'avion de chasse ✅ fait · à valider

Petit avion, avion de ligne d'aéroport en aéroport, hélicoptère, et avion de chasse avec mitrailleuse et missiles.

Tu apprends : voler en 3D (monter, descendre, tourner), la portance, décoller et atterrir, un pilote automatique. Durée : 3 séances.

44

La police aux 5 étoiles ✅ fait · à valider

Emboutir une voiture fait venir la police : de 1 à 5 étoiles selon le choc, l'hélico de la police à 5 étoiles, le commissariat si on est attrapé.

Tu apprends : une jauge qui monte et qui descend, des poursuivants (intelligence artificielle), voir ou ne pas voir. Durée : 2 séances.

45

La météo ✅ fait · à valider

7 météos qui changent toutes seules et changent la conduite, un ciel avec de vrais nuages.

Tu apprends : mélanger deux états (interpolation), le bruit fractal, le dérapage, la vitesse du son. Durée : 2 séances.

46

La nature et l'eau ✅ fait · à valider

Herbe en touffes qui plie au vent, fleurs, rochers, 3 espèces d'arbres, mer et étangs qui ondulent (étape 48).

Tu apprends : les instances, les parcelles, la carte des pentes. Durée : 1 séance.

47

Les vraies voitures ✅ fait · à valider

Bugatti Chiron, Porsche 911, Lamborghini Aventador, Honda NSX, citadine, SUV, camionnette, moto, quad, et le monster truck rétro à ressorts (étape 49).

Tu apprends : profil, extrusion et galbe, la loi du ressort, convertir une sauvegarde. Durée : 2 séances.

48

Les routes et la ville ✅ fait · à valider

Du goudron avec des fissures, des traces de pneus, des trottoirs en dalles, des façades détaillées, des fenêtres allumées quand il fait sombre, des panneaux et le nom des rues (étape 50).

Tu apprends : textures détaillées, lumière émise, trouver sur quelle rue on est. Durée : 1 à 2 séances.

49

Les voitures ultra réalistes ✅ fait · à valider

Chiron, 911, Aventador, NSX, Peugeot 508, Mercedes Vito, Kawasaki Ninja : des coques en tranches, de vraies roues, une suspension qui penche (étape 51).

Tu apprends : construire une forme par tranches, interpoler, les pièces d'une roue, le transfert de charge. Durée : 2 séances.

50

Le drift et la fumée ✅ fait · à valider

Drift à fond dans les virages, pneus qui crissent, fumée, traces noires, sportives qui patinent au démarrage (étape 53).

Tu apprends : deux directions qui s'écartent, les particules, une file circulaire. Durée : 1 séance.

51

Le rallye-raid ✅ fait · à valider

Un nouveau jeu : un désert avec dunes, boue, cailloux et gué, 7 véhicules du Dakar et 10 pilotes (étape 54).

Tu apprends : les fiches de terrain, le relief avec du bruit, les sauts. Durée : 2 séances.

52

Voitures, routes et immeubles très réalistes ✅ fait · à valider

Phares à LED, feux, plaques, ombre douce, Peugeot 208, Clio, taxi Toyota, police 308 ; boutiques, balcons, corniches et toits détaillés (étape 55).

Tu apprends : l'ombre de contact, recoller les pièces, les instances. Durée : 2 séances.

🌄

Des cartes 3 fois plus grandes ✅ fait · à valider

Les 5 cartes du circuit 3D 3 fois plus grandes, avec des collines, des forêts, une rivière et des ponts, et 16 nouvelles voitures (étape 68), redessinées avec leurs vraies mesures, leur intérieur et leur emblème (étape 69), puis toutes les voitures de tous les jeux (étape 70).

Tu apprends : étirer une route comme un élastique, recopier une tuile en la tournant, un relief calculé une fois sur une grille, l'interpolation. Durée : 2 séances.

⚡

Des motos, et plus de lags ✅ fait · à valider

Une moto cross Honda et une moto de trial dans le circuit 3D (étape 71), puis dans les tanks une moto, un quad, un camion de 6 soldats et une carte 3 fois plus grande (étape 71), puis un régulateur de qualité, moins de détails au loin et le soudeur dans les 3 jeux 3D pour qu'ils ne rament plus (étape 72).

Tu apprends : les images par seconde, le régulateur, le niveau de détail, souder les dessins. Durée : 2 séances.

🚁

Les hélicoptères de transport ✅ fait · à valider

Un Chinook et un Black Hawk dans les tanks, pour toi et pour les deux camps, avec 10 soldats qui descendent à la corde et 2 mitrailleuses de porte (étape 73).

Tu apprends : les conditions avec « ET », la machine à états, viser tout seul. Durée : 1 séance.

🎨

Des tanks bien plus beaux, 60 soldats ✅ fait · à valider

Les hélicos, les soldats et le décor des tanks redessinés (sol peint, chemins, herbe au vent, beaux arbres), et 60 soldats debout par équipe (étape 74).

Tu apprends : peindre une grande image pour le sol, la texture de détail, le squelette et la peau. Durée : 2 séances.

🏚️

Beaux tanks, maisons destructibles, grenades ✅ fait · à valider

Tous les tanks en camouflage, des maisons qui se cassent morceau par morceau et s'effondrent, et des grenades qui rebondissent (étape 75).

Tu apprends : découper un mur en morceaux, les points de vie, la gravité et les rebonds. Durée : 2 séances.

✈️

Les avions et le Tigre redessinés ✅ fait · à valider

Le Rafale, les chasseurs ennemis, l'avion de transport, le drone et le Tigre refaits, avec leurs animations (train, verrière, rampe, postcombustion) (étape 76).

Tu apprends : le profil d'une aile, un camouflage calculé dans l'espace, le niveau de détail. Durée : 1 séance.

⚔️

Les tanks : soldats, engins, bateaux, sous-marins, avions, portails, ordres ✅ fait · à valider

Un nouveau jeu de bataille (étape 60), puis sortir du tank, 24 soldats, un 4x4 à mitrailleuse, un hélico, un avion de chasse et un drone (étape 61), puis un lac avec des bateaux et des portails (étape 62), puis des îles, des sous-marins et un soldat avec un vrai squelette (étape 63), puis des avions ennemis, une DCA et des parachutistes (étape 64), puis des ordres écrits à ton camp (étape 65).

Tu apprends : les modes du joueur, la balle instantanée, les projectiles guidés, faire réfléchir l'ordinateur moins souvent. Durée : 2 séances.

53

Sauvegarder le monde 💡 idée

Retrouver son monde exactement comme on l'a laissé, et avoir plusieurs mondes.

Tu apprends : vraie base de données (IndexedDB), sauvegarder seulement ce qui a changé, versions du format, chargement au démarrage. Durée : 2 séances.

54

Jour, nuit et créatures

Le soleil se couche, des monstres sortent la nuit, le héros a des points de vie.

Tu apprends : horloge du monde, lumière, intelligence artificielle simple (machines à états : errer, poursuivre, fuir), entités. Durée : 2 à 3 séances.

55

Artisanat (craft)

Combiner des blocs pour fabriquer des outils ; une pioche casse la pierre plus vite.

Tu apprends : décrire les règles comme des données (recettes), et pas comme du code. Durée : 2 séances.

56

Multijoueur

Jouer à plusieurs dans le même monde, chacun sur son ordinateur.

Tu apprends : client et serveur, réseau et latence, « le serveur a toujours raison » (anti-triche), base de données sur un serveur, comptes joueurs. Durée : plusieurs séances.

📔 Journal de bord

Après chaque étape : ce qui a été fait, et ce que Maxance a appris, avec ses mots à lui.

Étape 1 · courir, sauter, esquiver · 24 septembre 2026

Ce qui a été construit : le jeu de base avec son architecture en 4 familles, les rayons X, la pause image par image, le ralenti, le journal des événements et la première base de données (record et statistiques).

Étape 2 · un monde en blocs · 24 septembre 2026

Ce qui a été construit : un monde sans fin rangé dans une grille de numéros et fabriqué par tronçons de 30 colonnes (avec une graine), des trous de 1 à 3 blocs, des plateformes à 2 ou 3 blocs de haut, des drapeaux tous les 30 blocs, une caméra qui suit le héros, des collisions avec la grille, les obstacles posés dans le monde, un score en blocs et la base de données en version 2. Sous le capot : la grille numérotée dans les rayons X et le nouveau panneau « La carte en mémoire ».

✍️ Précisions demandées par Claude et décidées par Maxance : obstacle touché = perdu et retour à zéro, monde sans fin, score en blocs, trous de 1 à 3 blocs.

Étape 3 · solide ou liquide · 24 septembre 2026

Ce qui a été construit : les caisses, murets et tours sont écrits dans la grille et deviennent solides (on monte dessus, par le côté c'est un mur) ; des mares de lave liquides font perdre et recommencer à zéro. Sous le capot : les numéros 4, 5, 6 dans la carte, les cadres blanc ou rouge des rayons X, les événements « mur » et « lave » dans le journal.

✍️ Maxance a repéré le problème en jouant (« quand j'atterris sur un bloc, je meurs ») et a choisi les règles : 1A, 2A, 3B.

Étape 4 · 5 vies et fosses de lave · 24 septembre 2026

Ce qui a été construit : 5 vies (cœurs en haut de l'écran), retour devant le trou ou au dernier drapeau selon la chute, « Aïe ! Plus de vies » et retour à zéro, une fosse de lave de 3 blocs au milieu de chaque tronçon. En plus : un numéro de version sur chaque fichier pour que le navigateur ne mélange plus les versions.

✍️ Maxance a d'abord cru qu'il fallait tester avant de choisir. Il a appris qu'un directeur de jeu imagine et décide la règle, puis la teste. Réponses : 1A, 2A, 3B.

Étape 5 · attention au bois ! · 25 septembre 2026

Ce qui a été construit : les caisses et murets en bois sont mortels (dessus ou par le côté : 1 vie en moins et retour au dernier drapeau) ; les tours en pierre restent solides et sans danger. Nouvelle propriété « mortel » dans la fiche des blocs, nouvel événement « piège » dans le journal, cadres rouges ou blancs dans les rayons X.

✍️ Réponses de Maxance : 1A (ça coûte une vie), 2A (par le côté aussi).

Étape 6 · pseudo, arrivée et classement · 25 septembre 2026

Ce qui a été construit : un formulaire de pseudo à l'accueil, une arrivée au drapeau n° 10 (300 blocs) avec l'écran « Bravo », un classement des 10 meilleurs joueurs (blocs, puis vies, puis temps) affiché à la fin de chaque partie et dans le panneau, et la base de données en version 3. Le classement est sur cet ordinateur ; la version en ligne attend un serveur.

✍️ Réponses de Maxance : 1B (en ligne), 2B (arrivée), 3 « A et B » (blocs puis vies), 4A (10 meilleurs joueurs).

Étape 7 · les flammes de la lave · 25 septembre 2026

Ce qui a été construit : un outil de particules (moteur/particules.js), une trentaine de flammes quand le héros tombe dans la lave, le héros qui brûle 1 seconde sur place avant de réapparaître. Sous le capot : « flammes en mémoire » et « en train de brûler ? » dans l'état en direct, les flammes et le compte à rebours dans les rayons X.

✍️ Réponses de Maxance : 1A (il brûle sur place), 2B (une trentaine de flammes, 2 secondes).

Étape 8 · demi-tour, bras levés et squelette · 25 septembre 2026

Ce qui a été construit : le héros se retourne selon sa direction (dessin en miroir), il a des bras qu'il lève en tombant dans un trou, il devient un petit squelette qui danse 5 s quand il touche un muret. Nouveau bloc n° 7 « bois à pics » pour le muret ; la caisse redevient solide et sans danger.

✍️ Maxance a validé les flammes de l'étape 7 et a demandé un squelette qui danse environ 5 secondes. Pour la caisse touchée par le côté et l'aspect du muret, Claude a pris ses conseils (2A, 3A) : à valider en jouant.

Étape 9 · un muret tous les 50 blocs · 25 septembre 2026

Ce qui a été construit : les murets à pics ne sont plus tirés au hasard ; 6 rendez-vous (vers les blocs 50, 100, 150, 200, 250 et 300), avec une place réservée par le cartographe. Nouvel événement « muret-pose » dans le journal.

Étape 10 · lacs de lave et inventaire · 25 septembre 2026

Ce qui a été construit : 3 lacs de lave (8 blocs, lave 2 blocs au-dessus du sol) avec une plateforme à 5 blocs de haut, un inventaire de 10 briques (saut + P), la pause sur Échap. Sous le capot : case visée dans les rayons X, blocs dans le sac dans l'état en direct, événements « bloc posé » et « pas de bloc ».

✍️ Réponses de Maxance : 1A, 2A, 3A, 4A.

Étape 11 · épée, monstres, bouclier et potion · 25 septembre 2026

Ce qui a été construit : un arbitre de combat (logique/combat.js), 3 monstres de 30 PV qui gardent le passage et frappent avec un minuteur au hasard, l'épée (T), le bouclier (3 coups), la potion (H), 20 PV, et l'armure rigolote (casque-casserole, plume, plastron à pois).

✍️ Réponses de Maxance : 1A, 2B, 3B, 4B, 5A, 6A, 7A, 8A. Conséquence : le 6ᵉ muret laisse sa place au dernier monstre.

Étape 12 · 1 000 blocs, fer et pioche · 25 septembre 2026

Ce qui a été construit : arrivée au bloc 1 000 avec des rendez-vous réguliers (10 monstres, 9 lacs, murets, drapeaux) ; épée qui s'use (20 coups) ; blocs de fer (n° 9) tous les 20 blocs, pioche (F, 3 coups), réparation (R) de l'objet le plus abîmé.

✍️ Réponses de Maxance : 1A, 2A, 3A, 4A, 5A.

🐞 Bug réparé · le jeu saccadait · 28 septembre 2026

Ce que Maxance a vu : « le jeu fait did, did, did, il s'arrête puis il reprend ». Ce n'était pas la connexion : une fois chargé, le jeu tourne entièrement dans l'ordinateur.

La cause : le panneau « La carte en mémoire », sous le jeu, était entièrement reconstruit 10 fois par seconde (350 cases). À chaque fois, le navigateur devait tout recalculer. Sur un ordinateur un peu lent, ça bloquait le jeu un instant, 10 fois par seconde.

La réparation : les tableaux sont construits une seule fois, puis on change seulement les cases qui ont changé, 4 fois par seconde, et plus du tout quand le panneau est hors de l'écran. Mesuré sur un ordinateur 6 fois plus lent : 8 images par seconde avant, 20 après (26 au maximum possible).

💡 La leçon : dans un jeu, il faut faire attention à tout ce qui se répète très souvent. Un petit travail × 10 fois par seconde, ça devient vite un gros travail !

Étape 13 · grottes, charbon, cochons et cuisine · 28 septembre 2026

Ce qui a été construit : un monde plus profond (24 lignes) et une caméra qui descend ; 4 grottes à escaliers avec du charbon (n° 11) dans la roche (n° 10) ; des cochons qui se promènent ; la cuisine (K) et les repas (M) ; la pioche en pierre qui s'use (30 coups) et que R répare.

✍️ Réponses de Maxance : 1A, puis « tout en A ». Le squelette danse maintenant 3 s (demandé le même jour).

Étape 14 · 100 blocs pour construire · 29 septembre 2026

Ce qui a été construit : 100 briques dans le sac, remplies à chaque drapeau ; les oreilles du jeu écoutent maintenant la souris ; un clic pose une brique à 4 blocs au plus (cadre vert ou rouge) ; F reprend une brique ; pas de construction à moins de 6 blocs d'un monstre. Sous le capot : la « case sous la souris » en direct, le cercle de portée et les zones interdites dans les rayons X, les événements « brique reprise » et « sac rempli ».

✍️ Réponses de Maxance : 1c 2c 3a 4b.

Étape 15 · pistolets, hache, épée dorée et armure · 29 septembre 2026

Ce qui a été construit : une barre d'inventaire de 9 cases en bas de l'écran (touches 1 à 9, T pour utiliser) ; un catalogue d'armes dans config.js ; 3 pistolets aux balles infinies avec une attente entre deux tirs ; une petite hache qui casse les caisses ; une épée dorée ; une armure en fer à fabriquer avec 5 fers. Sous le capot : les balles et la portée dans les rayons X, l'objet en main et l'attente dans l'état en direct, et de nouveaux messages dans le journal (tir, balle, armure…).

✍️ Réponses de Maxance : 1a 2b 3b 4a 5a 6b 7c.

Étape 16 · musique et bruitages · 29 septembre 2026

Ce qui a été construit : un synthétiseur (moteur/son.js) qui fabrique les sons avec des nombres ; un orchestre (affichage/sons.js) qui écoute les événements et regarde le bloc sous les pieds ; une musique rétro de 8 mesures ; des bruits pour les pas (herbe, bois, pierre), le saut, le tir, l'épée, le monstre touché et la lave ; J et B pour couper. Sous le capot : l'état du son en direct et le journal des réglages. Et la touche M (manger) marche maintenant aussi sur un clavier français.

✍️ Réponses de Maxance : 1a 2b 3a 4abcd 5b.

Étape 17 · pelle, casser les blocs et mitrailleuse · 29 septembre 2026

Ce qui a été construit : un nouveau fichier logique/outils.js (casser au clic : le bon outil en 1 clic, la pioche en 3 clics pour le reste) ; les blocs cassés vont dans le sac ; la barre passe à 11 cases (0 pelle, ° mitrailleuse) ; la mitrailleuse tire en rafale tant qu'on tient T, avec 50 balles ; les monstres laissent parfois des balles. Sous le capot : le cadre orange des blocs cassables, les fissures, le bloc en train d'être cassé et les balles dans l'état en direct, des sons « toc », « crac » et « ta-ta-ta ».

✍️ Réponses de Maxance : tout en A, sauf 3B.

Étape 18 · un cri et une batterie · 29 septembre 2026

Ce qui a été construit : deux bruitages dans l'orchestre (affichage/sons.js) : un cri de surprise quand le héros tombe dans un trou, et une batterie (tac-tac-tac-tac-tac, boum-tchak, cymbale) quand il touche un muret à pics.

Étape 19 · le Magnum et le bazooka · 29 septembre 2026

Ce qui a été construit : la barre passe à 13 cases (= Magnum, ² bazooka) ; le Magnum tire fort et recule (petit pas en arrière, le héros se penche, l'écran tremble) ; le bazooka tire des roquettes qui explosent (20 PV, un carré de 3 × 3 blocs cassés, des flammes) ; tous les 10 blocs de pierre minés, une roquette de plus. Sous le capot : la zone d'explosion dans les rayons X, les roquettes et le recul dans l'état en direct, de nouveaux sons (BANG, fshhh, BOUM, ding).

✍️ Réponses de Maxance : tout en A, sauf 5C.

Étape 20 · cliquer sur la barre · 29 septembre 2026

Ce qui a été construit : un clic sur une case de la barre prend l'objet en main ; la case sous la souris s'éclaire et son nom s'affiche ; la place des cases est calculée par une seule fonction partagée. Le journal dit « Clic sur la barre » ou « Touche … ».

Étape 21 · mitrailleuse infinie et rechargement · 29 septembre 2026

Ce qui a été construit : la mitrailleuse n'a plus de compteur ; le bazooka a un carquois dans le dos et une animation de rechargement en 3 temps (1,2 s, « clic-clac ») ; un bug d'arrondi réparé (la mitrailleuse tire bien 10 balles par seconde). Sous le capot : « rechargement du bazooka » dans l'état en direct, et « Bazooka rechargé » dans le journal.

🐞 Correction · des balles vraiment infinies (étape 23) · 29 septembre 2026

Ce que Maxance a dit : « Je t'avais dit que je voulais qu'il y ait des balles infinies. » Claude avait ajouté des chargeurs : les balles ne s'épuisaient pas, mais il fallait s'arrêter pour recharger.

La correction : plus de chargeur. L'animation de rechargement se joue pendant l'attente normale des armes lentes, juste pour le style. Le bazooka garde ses roquettes comptées. (demandes/23-balles-vraiment-infinies.md, version 23)

💡 La leçon : « balles infinies » peut vouloir dire « on n'en manque jamais » ou « on ne s'arrête jamais ». Plus une règle est précise, moins le développeur se trompe. C'est pour ça que la fiche de demande a une partie « Comment ».

Étape 22 · cinq nouvelles armes à feu · 29 septembre 2026

Ce qui a été construit : la barre passe à 18 cases ; fusil à pompe (5 plombs en éventail), fusil de sniper (laser de visée), pistolet laser (lancer de rayon), lance-flammes (zone de 3 blocs) et pistolet à eau (gouttes qui retombent et poussent) ; chaque arme à feu a un chargeur, une animation de rechargement, un éclair et un bruit à elle ; des douilles qui rebondissent. Sous le capot : chargeur et rechargement dans l'état en direct, nouveaux messages dans le journal.

✍️ Réponses de Maxance : 1abcde 2a 3b 4abc.

Étape 24 · un héros de 2 blocs · 29 septembre 2026

Ce qui a été construit : le héros passe de 30 × 46 à 52 × 80 px (le dessin est agrandi avec une échelle) ; il saute plus haut ; il se baisse avec S et ne se relève que s'il a la place ; les armes grandissent avec lui et ont plus de détails ; les roquettes du bazooka sont illimitées. Sous le capot : « taille » dans l'état en direct, et les messages « il se baisse », « il se relève », « il reste baissé ».

✍️ Réponses de Maxance : tout en B.

Étape 25 · dragons, grottes à conquérir, miner avec T · 29 septembre 2026

Ce qui a été construit : un dragon mutant de 500 PV tous les 100 blocs (dessiné en style dessin animé, 4 blocs de haut), qui s'approche à 10 blocs et garde le passage ; un coffre (potion + 5 fers) quand il est vaincu ; 2 monstres de 30 PV dans chaque grotte, qui s'approchent à 6 blocs ; une grotte vidée devient la tienne (drapeau à ton nom, point de retour) ; T mine avec la pelle, la hache ou la pioche. Sous le capot : zones de vue et laisses dans les rayons X, « boss le plus proche », « grottes conquises » et « point de retour » dans l'état en direct, des grognements et une fanfare.

✍️ Réponses de Maxance : tout en A, sauf la 7 (toutes les options). « Pas effrayant à ce point » : le dragon a été adouci.

Étape 26 · la caméra qui monte · 29 septembre 2026

Ce qui a été construit : la caméra garde la tête du héros sous 250 px et ses pieds au-dessus de 440 px ; elle peut monter au-dessus du monde (camera.y négatif). Sous le capot : les deux lignes de la caméra dans les rayons X.

Étape 27 · un monde sur mesure, et tirer à couvert · 30 septembre 2026

Ce qui a été construit : trous et mares de lave de 2 ou 3 blocs, plateformes à 3 ou 4 blocs du sol, plus de place autour du dragon ; derrière un bloc, le héros lève son arme et tire par-dessus (balles, laser, flammes, roquettes) ; les monstres ne frappent pas à travers un bloc. Sous le capot : « arme levée par-dessus un bloc » et « caché derrière un bloc ? » dans l'état en direct.

Étape 28 · arbres, portes et escaliers · 30 septembre 2026

Ce qui a été construit : des arbres (tronc 12, feuilles 13) ; 🪵 bois en coupant les troncs ; portes (14) et escaliers (15, 16) à poser avec la souris ; une porte n'est pas solide pour le héros ; on monte les marches en marchant ; plus aucune limite pour construire : briques illimitées, ni distance, ni hauteur (lignes négatives), ni dragon ; le petit pistolet enlevé ; la danse du cochon vaincu ; la musique se tait pendant la batterie du squelette. Sous le capot : bois, arbres, constructions et cochons qui dansent dans l'état en direct, les nouveaux numéros dans « La carte en mémoire ».

✍️ Réponses de Maxance : tout en A.

Étape 29 · le monde à ta taille · 4 octobre 2026

Ce qui a été construit : caisses de 2 blocs, tours de 4, murets à pics de 2 de haut ; cochons et monstres des grottes 2 fois plus grands ; grottes plus hautes ; arbres de 5 à 8 blocs ; drapeaux, nuages et collines plus grands ; zoom ×1 / ×1,5 / ×2 avec V ; la pioche casse les pics ; le son s'endort quand une autre fenêtre passe devant ; le son ralentit au ralenti ; saute + Entrée pose un bloc (au lieu de P). Sous le capot : « zoom » et « vitesse du son » dans l'état en direct, les messages du zoom et du son endormi dans le journal.

✍️ Réponses de Maxance : toutes les options.

Étape 30 · l'arme dans le dos, et les lasers · 4 octobre 2026

Ce qui a été construit : le bug du lance-flammes réparé (le réservoir reste sur le dos) ; les armes vont dans le dos pendant un saut ou contre un mur, et ressortent à l'atterrissage en 0,6 s (« shliiing ! ») ou vite avec T ; contre un mur, T fait un petit saut tout seul et tire en haut ; pose de soldat dans l'escalier ; lasers verts sur la mitrailleuse, le Magnum, le bazooka, le fusil à pompe et le sniper ; un bruit de science-fiction pour le pistolet laser. Sous le capot : « l'arme » et « viseur laser » dans l'état en direct ; arme rangée, arme sortie et petit saut dans le journal.

✍️ Réponses de Maxance : 1b avec un petit saut automatique, 2b, 3b, 4b, 5b.

Étape 31 · le carrefour et la voiture · 4 octobre 2026

Ce qui a été construit : le carrefour après le dragon du bloc 100, avec un menu à 3 boutons ; le souterrain (couloir, lave, charbon, fer, monstres, drapeaux sous terre) ; le chemin du ciel (grand escalier, planches, fer ; on passe au-dessus des dragons) ; la route (goudron = case 17, bosses, rampes, trous, bidons) ; la voiture (E, ← →, rampes, essence, G, chute). Sous le capot : « chemin », « voiture » et « bidons » dans l'état en direct, et tous les messages du carrefour et de la voiture dans le journal.

✍️ Réponses de Maxance : 1a 2b 3b 4a 5a 6b 7b.

Étape 32 · le circuit 3D · 4 octobre 2026

Ce qui a été construit : un deuxième jeu, dans le dossier circuit/ : un moteur 3D fait maison (WebGL, sans aucun outil extérieur), un circuit ovale avec bordures, damier, portique, tribune, sapins et clôture, une voiture avec des roues qui tournent et braquent, 3 tours avec feux de départ, chrono, portes anti-triche, sortie dans l'herbe, records sauvegardés, 3 caméras. Sous le capot : la voiture en nombres (x, z, angle, vitesse), l'écart au milieu de la route, les triangles dessinés, les rayons X (fil de fer, portes, flèche de vitesse).

✍️ La demande disait « le plus simple » : Claude a choisi l'ovale, 3 tours et l'herbe qui freine. À Maxance de valider ou de changer ces règles.

Étape 33 · un circuit 3 fois plus grand · 4 octobre 2026

Ce qui a été construit : le circuit passe de 491 m à 1 474 m par tour (lignes droites de 360 m, virages de 120 m de rayon), la route reste à 14 m. Le terrain passe à 800 m de côté avec 260 sapins, la brume commence plus loin, et la mini-carte calcule son échelle toute seule.

✍️ Réponses de Maxance : 3 fois plus grand, route de la même largeur.

Étape 34 · une voiture adverse · 4 octobre 2026

Ce qui a été construit : une voiture bleue conduite par un pilote automatique (la carotte, 18 m devant, sur sa voie), qui change de voie pour doubler ; les chocs entre les voitures (2 cercles par voiture, écartement et rebond) ; la position 1er ou 2e ; « Gagné ! » ou « Perdu ! » ; la base de données en version 2 avec les victoires et les défaites. Sous le capot : la carotte et les cercles aux rayons X, « La voiture bleue » dans l'état en direct, et les chocs, dépassements et tours de l'adversaire dans le journal.

✍️ Réponses de Maxance : vitesse « moyen » (140 km/h), les voitures se cognent, perdu tout de suite si l'adversaire finit avant.

Étape 35 · le bruit du moteur · 4 octobre 2026

Ce qui a été construit : un synthétiseur pour le circuit (moteur/son.js) et un ingénieur du son (affichage/sons.js) : ton gros moteur grave (38 à 90 Hz), le moteur de la voiture bleue (volume selon la distance, gauche ou droite), « chhhh » dans l'herbe, « BOUM » au choc, bips du départ, B pour couper. Sous le capot : la rubrique « Le son » dans l'état en direct.

✍️ Réponses de Maxance : gros moteur grave, la voiture bleue s'entend selon la distance, choc + herbe + bips.

Étape 36 · le garage, 5 voitures et les pièces · 4 octobre 2026

Ce qui a été construit : le garage (← → Entrée, caméra qui tourne autour de la voiture), 5 voitures avec leur forme (affichage/modeles.js), leur couleur, leur vitesse (150 à 190 km/h) et leur bruit ; 50 pièces dorées par course (logique/pieces.js), le « ding », le compteur et les points dorés sur la mini-carte ; la base de données en version 3 (pièces, voitures achetées, voiture choisie). Sous le capot : « Les pièces » dans l'état en direct, et les achats et pièces dans le journal.

✍️ Réponses de Maxance : couleur et vitesse puis formes (Lamborghini, Porsche, Bugatti, Formule 1 au son aigu), 50 pièces, prix 50 / 100 / 200 / 400, pièces gardées même si on perd.

Étape 37 · choisir sa carte, et le parcours · 4 octobre 2026

Ce qui a été construit : l'écran « Choisis ta carte » ; la map du parcours (700 m × 700 m) avec 3 montées, 4 tremplins, 2 loopings, 2 tunnels, 62 pièces et 12 piles de cartons (logique/parcours.js, logique/balade.js, affichage/decor-parcours.js) ; le saut avec la gravité ; le looping sur un rail ; un garage par carte avec 4 véhicules tout-terrain ; la base de données en version 4. Sous le capot : y, vy, le dernier saut, le looping et les cartons dans l'état en direct, les décollages et atterrissages dans le journal.

✍️ Réponses de Maxance : la carte avant le garage, une map plate (pas l'ovale) en balade libre, montées + tremplins + loopings + tunnels, pièces partout et cartons, un garage par carte (monster truck, 4x4, pickup, buggy).

Étape 38 · un rendu réaliste avec Three.js · 4 octobre 2026

Ce qui a été construit : Three.js (rangé dans circuit/vendor/) ; 9 véhicules arrondis, avec vitres, jantes et phares ; ombres, reflets, ciel, brouillard ; textures peintes par le code ; décors du circuit et du parcours refaits ; ⌫ et un bouton « 🗺️ Cartes » pour changer de map.

Étape 39 · la ville · 4 octobre 2026

Ce qui a été construit : la ville en grille (logique/ville.js), la circulation avec les feux (logique/circulation.js), le personnage et les règles de la ville (logique/en-ville.js), le décor (affichage/decor-ville.js), 5 nouveaux véhicules et le personnage (affichage/modeles.js), la base de données en version 5.

Étape 40 · le grand parcours · 4 octobre 2026

Ce qui a été construit : la route en courbe et ses tronçons, les plateformes, le creux et les piliers (logique/grand-parcours.js), le nitro (logique/voiture.js), les chutes (logique/balade.js), le décor (affichage/decor-grand-parcours.js), 5 nouveaux véhicules avec le gyrophare (affichage/modeles.js), la sirène, la base de données en version 6.

Étape 41 · les méga-rampes · 5 octobre 2026

Ce qui a été construit : le ruban partagé (moteur/ruban.js), la piste dans le ciel (logique/mega-rampes.js), les règles de la course (logique/rampes.js), le décor en bois et les nuages (affichage/decor-rampes.js), la moto, la barre de dégâts, la base de données en version 7.

Étape 42 · la ville géante · 5 octobre 2026

Ce qui a été construit : l'archipel (logique/archipel.js) avec les ponts, les îles et les aéroports, le décor (affichage/decor-archipel.js), les avions et l'hélico garés, la moto en ville, les magasins et l'écran du magasin, la mini-carte qui suit le joueur, la base de données en version 8.

Étape 43 · les petits boulots · 5 octobre 2026

Ce qui a été construit : le patron des boulots (logique/boulots.js) avec ses 4 machines à états, les ronds lumineux, la colonne de lumière, les poubelles et le client du taxi en 3D, la flèche et le panneau du boulot, le travail de vendeur dans les magasins, la base de données en version 9.

Étape 44 · les avions · 5 octobre 2026

Ce qui a été construit : le pilotage (logique/vol.js), les armes et les cibles (logique/armes.js), l'avion de chasse en 3D, les balles, les missiles et les explosions, les instruments de vol et le viseur, la base de données en version 10.

Étape 45 · la police · 5 octobre 2026

Ce qui a été construit : le commissaire (logique/police.js) : les étoiles, les voitures de police qui vont de carrefour en carrefour, l'hélico, la vue, l'arrestation ; le commissariat, le projecteur, les étoiles à l'écran, la sirène qui s'approche, la base de données en version 11.

Étape 46 · la voiture ne tremble plus · 5 octobre 2026

Ce qui a été corrigé : la hauteur de la route là où deux tronçons se chevauchent (moteur/ruban.js), et la voiture qui penche en douceur (affichage/scene3d.js).

Étape 47 · la météo · 5 octobre 2026

Ce qui a été construit : le présentateur météo (logique/meteo.js), le dérapage et le vent (logique/voiture.js, logique/vol.js), le peintre du ciel avec les nuages, la pluie, la neige, les éclairs, le sol mouillé et enneigé (affichage/meteo3d.js), les sons de pluie, de vent et de tonnerre.

Étape 48 · la nature et l'eau · 5 octobre 2026

Ce qui a été construit : le jardinier (affichage/nature.js) avec l'herbe, les fleurs, les rochers et les arbres, le faiseur de vagues (affichage/eau.js), un sol aux couleurs variées.

Étape 49 · les vraies voitures · 5 octobre 2026

Ce qui a été construit : l'atelier du carrossier (affichage/voitures-reelles.js), le galbe et les vraies vitres (affichage/modeles.js), les ressorts (logique/ressorts.js), la sauvegarde version 12.

Étape 50 · les routes et la ville · 5 octobre 2026

Ce qui a été construit : le goudron, les trottoirs et les façades (affichage/textures.js), les fenêtres allumées et le mobilier de la rue (affichage/decor-ville.js), les traces de pneus (affichage/decor-circuit.js), le nom des rues (logique/ville.js).

Étape 51 · les voitures ultra réalistes · 5 octobre 2026

Ce qui a été construit : le constructeur de coques (affichage/coque.js), l'atelier du pneumaticien (affichage/roues.js), le bureau de design (affichage/voitures-marques.js), la suspension de toutes les voitures (logique/ressorts.js).

Étape 53 · le drift et la fumée · 5 octobre 2026

Ce qui a été construit : le drift et le patinage (logique/voiture.js), la fumée et les traces (affichage/fumee.js), le crissement (affichage/sons.js), la caméra qui suit la glissade.

Étape 54 · le rallye-raid · 5 octobre 2026

Ce qui a été construit : un nouveau jeu dans raid/ : le désert et ses terrains (logique/terrain.js), la conduite tout-terrain et les sauts (logique/vehicule.js), les 10 pilotes (logique/pilotes.js), les 7 véhicules dessinés en code (affichage/vehicules.js), la poussière et les traces, les sons, et le carnet de bord du pilote (donnees/sauvegarde.js).

✍️ Maxance a choisi : un jeu à part, balade libre, les 4 familles de véhicules, plusieurs terrains.

Étape 55 · voitures, routes et immeubles très réalistes · 6 octobre 2026

Ce qui a été construit : des coques avec un vrai toit et des flancs galbés (affichage/coque.js), les blocs optiques, les grilles, les lettres, les plaques et 4 nouvelles voitures de tous les jours (affichage/voitures-marques.js), l'ombre douce (affichage/modeles.js), le relief des immeubles et l'usure des rues (affichage/decor-ville.js, affichage/textures.js).

✍️ Maxance a choisi : tout d'un coup, en code.

Étape 56 · le circuit ne rame plus · 6 octobre 2026

Ce qui a été construit : les véhicules recollés (affichage/modeles.js), les immeubles recollés (affichage/decor-ville.js), les pièces en instances et la qualité automatique (affichage/scene3d.js).

Étape 57 · des voitures plus grandes et plus vraies · 6 octobre 2026

Ce qui a été construit : la taille des véhicules et la peinture moins métallique (affichage/modeles.js, config.js), des phares et des rétros plus petits, le pilote en cuir (affichage/voitures-marques.js).

Étape 58 · la course à 12 et le policier · 6 octobre 2026

Ce qui a été construit : les 11 adversaires (logique/course.js, logique/pilote.js), leur dessin (affichage/scene3d.js), la place sur 12 (affichage/tableau-de-bord.js), le métier de policier et la voiture en fuite (logique/boulots.js, logique/circulation.js).

✍️ Maxance a choisi : gagné si 1er, adversaires tous différents, voiture en fuite aussi rapide que toi, voiture de police donnée, 20 pièces par voiture.

Étape 59 · des voitures plus vraies et le choix de la météo · 6 octobre 2026

Ce qui a été construit : l'écran de météo (logique/course.js, logique/meteo.js, affichage/tableau-de-bord.js), l'intérieur et les vitres (affichage/voitures-marques.js), les ailes bombées (affichage/coque.js), les reflets (affichage/modeles.js), les jantes (affichage/roues.js).

Étape 60 · la bataille de tanks · 6 octobre 2026

Ce qui a été construit : un nouveau jeu dans tanks/ : le champ de bataille (logique/terrain.js), le tank (logique/char.js), les obus (logique/obus.js), le cerveau de l'ordinateur (logique/ia.js), les 3 tanks en 3D (affichage/chars3d.js), le village en ruines (affichage/decor.js), les explosions et la fumée (affichage/effets.js).

✍️ Maxance a choisi : un jeu à part, équipe contre équipe, une campagne avec un village en ruines, de vrais tanks modernes, 4 obus pour détruire.

Étape 61 · sortir du tank, les soldats et les engins · 6 octobre 2026

Ce qui a été construit : le soldat (logique/soldat.js), le sergent des 24 soldats (logique/troupes.js), les engins de ton camp (logique/engins.js), les roquettes, bombes, missiles et grenades (logique/obus.js), « où tu es » (logique/monde.js), les soldats et engins en 3D (affichage/engins3d.js).

✍️ Maxance a choisi : 12 soldats par équipe, pistolet + mitrailleuse + lance-roquettes, le 4x4 garé dans ton camp, seulement toi pilotes les engins.

Étape 62 · des bateaux et des portails · 6 octobre 2026

Ce qui a été construit : le lac (logique/terrain.js, affichage/decor.js), les bateaux (logique/bateaux.js, la vedette dans logique/engins.js), les portails (logique/portails.js), leurs dessins (affichage/engins3d.js), la gerbe d'eau et le sillage (affichage/effets.js).

✍️ Maxance a choisi : dans les tanks, ton bateau et des bateaux ennemis.

Étape 63 · sous-marins, îles, soldat réaliste · 7 octobre 2026

Ce qui a été construit : les îles (logique/terrain.js), les sous-marins et la torpille (logique/sousmarins.js, logique/obus.js), le soldat avec son squelette et la nage (affichage/engins3d.js, logique/soldat.js), l'interpolation et la caméra qui évite les murs (logique/monde.js, affichage/scene.js).

✍️ Maxance a dit : des sous-marins, des îles, un personnage plus réaliste, et réparer ses petits bugs sans poser de questions.

Étape 64 · avions ennemis et parachutistes · 7 octobre 2026

Ce qui a été construit : les chasseurs ennemis et les avions de transport (logique/avions.js), les parachutistes (logique/troupes.js, logique/monde.js), la DCA et son obus à fusée de proximité (logique/engins.js, logique/obus.js), leurs dessins (affichage/engins3d.js).

✍️ Maxance a choisi : les avions bombardent et font des duels, une DCA pour les abattre, des parachutistes pour les deux camps, 6 toutes les 60 s.

Étape 65 · donner des ordres en les écrivant · 7 octobre 2026

Ce qui a été construit : la barre des ordres (affichage/barre-ordres.js), le lecteur d'ordres avec son dictionnaire et la distance de Levenshtein (logique/ordres.js, config.js), l'obéissance des tanks et des soldats (logique/ia.js, logique/troupes.js).

✍️ Maxance a choisi : touche T, tout le camp obéit, 4 familles d'ordres, deviner les fautes et sinon le dire.

Étape 66 · plus de son quand on quitte le jeu · 8 octobre 2026

Ce qui a été construit : le son des tanks (tanks/affichage/sons.js) et du rallye-raid (raid/affichage/sons.js) s'endort quand la page est cachée ou derrière une autre fenêtre.

Étape 67 · plus de vie, et elle remonte · 9 octobre 2026

Ce qui a été construit : la vie de ton soldat et de ton tank (config.js), le soin automatique (logique/monde.js), les barres de vie (affichage/tableau.js).

✍️ Maxance a choisi : soldat + tank, 20 balles, la vie remonte toute seule.

Étape 68 · des cartes 3 fois plus grandes · 12 octobre 2026

Ce qui a été construit : l'étireur de routes (circuit/moteur/etirer.js), le sculpteur de collines et de rivière (circuit/moteur/campagne.js), le peintre du paysage (circuit/affichage/paysage.js), le parcours en 9 tuiles, la ville en 7 × 7 avec sa campagne, et 16 nouvelles voitures (circuit/affichage/voitures-nouvelles.js).

✍️ Maxance a choisi : le circuit 3D, toutes les cartes, 3 fois plus grand, forêts + collines + rivière avec des ponts + nouvelles voitures (allemandes, supercars, françaises, tout-terrain, voitures de rêve).

Étape 69 · les nouvelles voitures redessinées · 12 octobre 2026

Ce qui a été construit : l'épaule des coques (circuit/affichage/coque.js), et dans circuit/affichage/voitures-nouvelles.js : les 16 voitures redessinées, les pièces moulées, l'habitacle et les emblèmes.

✍️ Maxance a choisi : les 16 nouvelles voitures ; la forme, les détails, les roues et l'intérieur.

Étape 70 · toutes les voitures plus réalistes · 13 octobre 2026

Ce qui a été construit : la silhouette et les passages de roues (circuit/affichage/voitures-nouvelles.js), les 20 voitures refaites (circuit/affichage/voitures-refaites.js), l'atelier du rallye-raid (raid/affichage/atelier.js, vehicules.js) et celui des tanks (tanks/affichage/outils3d.js, chars3d.js, engins3d.js).

✍️ Maxance a choisi : tous les jeux, et encore plus de détails sur les 16.

Étape 71 · des motos, un quad, un camion et une carte des tanks 3 fois plus grande · 14 octobre 2026

Ce qui a été construit : les deux motos (circuit/affichage/motos-cross.js), les roues à rayons (roues.js) et la moto qui penche (scene3d.js) ; dans les tanks, les engins qui roulent (tanks/logique/vehicules.js, tanks/affichage/vehicules3d.js) et la grande carte (tanks/logique/terrain.js).

✍️ Maxance a choisi : parcours, grand parcours et ville ; la moto aussi pour l'ordinateur dans les tanks, un quad, un camion, une carte des tanks 3 fois plus grande, une moto de trial.

Étape 72 · plus de lags · 13 octobre 2026

Ce qui a été construit : le régulateur de qualité (circuit/affichage/scene3d.js, raid/affichage/qualite.js, tanks/affichage/qualite.js), le soudeur (circuit/affichage/souder.js), les feux en instances (decor-ville.js) et les forêts qui se cachent au loin (nature.js).

✍️ Maxance a choisi : les 3 jeux 3D ; sur les grandes cartes, et tout le temps.

Étape 73 · les hélicoptères de transport · 15 octobre 2026

Ce qui a été construit : les hélicos de transport (tanks/logique/helicos.js) et leur dessin (tanks/affichage/helicos3d.js).

✍️ Maxance a choisi : le Chinook et le Black Hawk, pour les deux camps, 10 soldats et 2 mitrailleuses, la descente à la corde.

Étape 74 · 60 soldats, et des tanks bien plus beaux · 15 octobre 2026

Ce qui a été construit : les coques lisses (tanks/affichage/outils3d.js), les hélicos refaits (helicos3d.js), les soldats en chair et os (engins3d.js) et le sol peint, l'herbe et les arbres (decor.js).

✍️ Maxance a choisi : 60 soldats ; refaire les hélicos, les soldats, le décor et les photos ; le plus beau possible.

Étape 75 · beaux tanks, maisons destructibles, grenades · 16 octobre 2026

Ce qui a été construit : les murs en morceaux (tanks/logique/structures.js), le dessin des maisons et de leurs dégâts (tanks/affichage/maisons3d.js), les tanks repeints (chars3d.js) et les grenades.

✍️ Maxance a choisi : tous les tanks le plus beau possible, des maisons et des structures qui se détruisent de façon un peu réaliste, des grenades.

Étape 76 · les avions et le Tigre redessinés · 16 octobre 2026

Ce qui a été construit : les 5 appareils (tanks/affichage/avions3d.js), l'outil qui fabrique les ailes (outils3d.js) et leur placement avec le niveau de détail (scene.js).

✍️ Maxance a demandé : refaire les avions et le Tigre.