Les 4 fantômes
1980 : quatre règles, zéro neurone. Blinky te cherche, Pinky te coupe — et tu transpirais quand même.
42 secondes · sous-titres Français inclus · 9.3 Mo
Les 7 trucs que tu vas savoir faire
Leçon 5 : l'IA d'avant l'IA
Regarde la leçon (42 s) : quatre fantômes, zéro neurone — et une leçon de plus sur ce qu'est vraiment un programme qui décide.
Blinky poursuit, point
Écris la méthode `cible_blinky(pos)` : elle renvoie exactement `pos` — la poursuite directe, zéro détour. Exemple : cible_blinky([3, 4]) → [3, 4].
Pinky coupe la route
Écris `cible_pinky(pos)` : il vise QUATRE cases devant toi — `[pos[0] + 4, pos[1] + 4]`. Exemple : cible_pinky([0, 0]) → [4, 4].
Inky, deux infos une décision
Écris `cible_inky(pos, detail)` : sa cible ADDITIONNE ta position et le détail — les deux infos dans la décision. Exemple : cible_inky([0, 0], [2, 3]) → [2, 3].
Clyde poursuit… puis fuit
Écris `cible_clyde(pos, distance)` : distance STRICTEMENT supérieure à 8 → il poursuit (renvoie `pos`), sinon il FUIT et renvoie le symbole `:fuite`.
Un fantôme, une règle
Écris `cible(nom, pos)` : "blinky" poursuit (renvoie `pos`), "pinky" vise quatre cases devant, tout autre nom → `nil`. La règle choisie par un mot.
Leçon 5 : OK
Sans aide : `cible(nom, pos, distance = 20)` pour les TROIS — "blinky" → pos · "pinky" → quatre cases devant · "clyde" → distance > 8 ? pos : :fuite · sinon nil.
📄 La feuille de chute
imprime-la, colle-la à ton écran, fais semblant que c'est ton idée📄 Cheat sheet — Les 4 fantômes (l'IA d'avant l'IA)
Un fantôme, c'est une fonction. Un comportement, c'est un
ifbien écrit.
Pourquoi Pac-Man est ton meilleur prof d'IA
En 1980, zéro neurone, zéro GPU — et pourtant les quatre fantômes avaient chacun une personnalité. Ce n'était que des règles : position → cible → direction. C'est exactement ce que fait un « agent » aujourd'hui. Tu comprends un fantôme, tu comprends un LLM : du comportement, écrit par quelqu'un.
Le lexique des quatre (en une phrase chacun)
| Fantôme | Sa règle | Traduction Ruby |
|---|---|---|
| 🔴 Blinky | il te poursuit, point | def cible_blinky(pos); pos; end |
| 🩷 Pinky | il te coupe — 4 cases devant | [pos[0] + 4, pos[1] + 4] |
| 🔵 Inky | deux infos → une décision | [pos[0] + d[0], pos[1] + d[1]] |
| 🟠 Clyde | distance > 8 ? poursuite : fuite | distance > 8 ? pos : :fuite |
La structure qui revient partout : case
def cible(nom, pos, distance = 20)
case nom
when "blinky" then pos
when "pinky" then [pos[0] + 4, pos[1] + 4]
when "clyde" then (distance > 8 ? pos : :fuite)
end # autre nom → nil : pas de règle, pas de comportement
end
Un mot → une règle. C'est un dispatch, un state machine, un « router » — le même mot partout.
Les 3 pièges du joueur
>vs>=: Clyde fuit à partir de 8 — teste les bords (8 et 9) comme dans la vidéo.- Muter l'entrée (
pos[0] += 4) au lieu d'en calculer une nouvelle : ton Pac-Man a bougé, pas ton fantôme. - Oublier le cas par défaut : sans
else, un nom inconnu →nil→ le fantôme s'arrête. (Un agent sans règle, c'est un agent mort.)
La phrase qui débloque tout
L'IA, c'est des
ifbien écrits. La différence aujourd'hui ? Lesifsont écrits par d'autres machines. Le lecteur, c'est toujours toi.
À ne plus jamais dire
"c'est magique / c'est de l'IA"→ c'est une règle que quelqu'un a écrite. Lis-la."un script, c'est pas de l'IA"→ Blinky est un script. Et il t'a fait peur pendant 40 ans. 😉
SlopCourse — du slop au code propre.