cours n°5 · Découverte

Les 4 fantômes

1980 : quatre règles, zéro neurone. Blinky te cherche, Pinky te coupe — et tu transpirais quand même.

~11 min7 stations
▶ vidéo🧩 exercices📄 cheat sheet

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.

Partage la leçon

← tous les cours

📄 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 if bien é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

  1. > vs >= : Clyde fuit à partir de 8 — teste les bords (8 et 9) comme dans la vidéo.
  2. Muter l'entrée (pos[0] += 4) au lieu d'en calculer une nouvelle : ton Pac-Man a bougé, pas ton fantôme.
  3. 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 if bien écrits. La différence aujourd'hui ? Les if sont é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 Microduck — du slop au code propre.