Ce parcours est fait pour être suivi dans l'ordre, du début à la fin. Chaque étape débloque un nouveau pouvoir et se termine par un petit défi « à toi de jouer ». Tu n'as besoin de rien connaître au départ. À l'arrivée, tu auras programmé un vrai petit jeu, un casse-brique, en assemblant tout ce que tu auras appris en chemin.

Recopie chaque programme dans l'éditeur (ED), valide avec Ctrl+S (sur Mac : +S), puis lance la commande depuis l'invite ?. Change les nombres, observe : c'est en bricolant qu'on comprend.

Les étapes : 1. Le premier trait · 2. La paresse intelligente · 3. Inventer ses mots · 4. Assembler des briques · 5. Ta première erreur · 6. Décider · 7. Se souvenir · 8. L'effet waouh · 9. Ça bouge · 10. Dessine tes formes · 11. La balle qui rebondit · 12. Ton jeu

Étape 1. Le premier trait

Au lancement, tape MT (Montre Tortue) pour faire apparaître la zone graphique. La tortue est là, au centre, pointée vers le haut. Donne-lui un ordre :

? AVANCE 100
? TD 90
? AVANCE 100

Elle avance, tourne à droite, avance encore. AVANCE (ou AV) déplace, TD tourne à droite, TG tourne à gauche. Avec ça seul, tu peux déjà tracer un carré, côté par côté.

À toi de jouer : termine le carré à la main (quatre AV et quatre TD 90).

Étape 2. La paresse intelligente

Quatre fois la même chose, c'est pénible à taper. Un bon programmeur est paresseux : il fait répéter la machine. C'est le rôle de REPETE :

? REPETE 4 [ AV 100 TD 90 ]

Le carré en une ligne. Change le 4 et l'angle pour d'autres polygones : l'angle vaut toujours 360 divisé par le nombre de côtés.

? REPETE 3 [ AV 120 TD 120 ]   ; triangle
? REPETE 6 [ AV 80 TD 60 ]    ; hexagone

À toi de jouer : fais un cercle. Indice : beaucoup de petits pas et de tout petits virages, par exemple REPETE 360 [ AV 5 TD 1 ].

Étape 3. Inventer ses mots

Tu vas vouloir réutiliser ton carré sans le retaper. Alors apprends ce mot nouveau à la tortue, avec POURFIN :

POUR CARRE
  REPETE 4 [ AV 100 TD 90 ]
FIN

GoLogo répond VOUS VENEZ DE DEFINIR CARRE. Désormais CARRE est une commande comme les autres. Et pour choisir la taille, ajoute un paramètre :

POUR CARRE :COTE
  REPETE 4 [ AV :COTE TD 90 ]
FIN
? CARRE 50
? CARRE 150

À toi de jouer : écris POLYGONE :N :COTE qui trace un polygone à :N côtés. (Rappel : l'angle est 360 / :N.)

rosace de carrés

Douze appels à CARRE en tournant un peu à chaque fois : une rosace.

Étape 4. Assembler des briques

Un gros programme, c'est juste des petits programmes mis bout à bout. Définis un mur et un toit, puis une maison qui s'en sert :

POUR MUR
  REPETE 4 [ AV 100 TD 90 ]
FIN

POUR TOIT
  REPETE 3 [ AV 100 TD 120 ]
FIN

POUR MAISON
  VE MUR AV 100 TD 30 TOIT
FIN

Voilà l'idée la plus importante de la programmation : découper un gros problème en petits morceaux qu'on sait résoudre.

À toi de jouer : ajoute une PORTE à la maison. Pense à lever le crayon (LC) pour déplacer la tortue sans tracer, et à le baisser (BC) avant de dessiner.

maison

MAISON : un mur carré surmonté d'un toit triangulaire.

Étape 5. Ta première erreur

C'est ici que tu apprends quelque chose que les blocs colorés ne t'apprendront jamais : lire une erreur et la corriger. Tape exprès une bêtise :

? AVANCE BONJOUR

GoLogo proteste : AVANCE N'AIME PAS BONJOUR. Il ne te dit pas « non » bêtement : il t'explique. AVANCE attend un nombre, pas un mot. Autre classique :

? CARRR 50
COMMENT FAIRE CARRR ?

Une faute de frappe : GoLogo ne connaît pas CARRR. Tu corriges, tu réessaies. C'est ça, programmer pour de vrai : on se trompe, on lit le message, on corrige. Ce réflexe te servira dans tous les langages, plus tard.

Les messages d'erreur de GoLogo sont écrits pour être compris. Si un jour tu bloques, relis le message : il nomme presque toujours la commande fautive.

Étape 6. Décider

Un programme intéressant ne fait pas toujours la même chose : il décide. La commande SI exécute des instructions seulement si une condition est vraie :

? SI 3 > 2 [ ECRIS "PLUS_GRAND ]

Une condition, c'est une question à laquelle on répond par oui ou par non (en Logo : VRAI ou FAUX). Ces questions finissent toujours par un ? : EGAL? (est égal ?), PLG? (plus grand ?), PLP? (plus petit ?). On peut aussi écrire les comparaisons avec les signes =, >, <, comme en maths. Avec une deuxième liste, SI fait « sinon » :

POUR SIGNE :N
  SI :N > 0 [ ECRIS "POSITIF ] [ ECRIS "NEGATIF_OU_NUL ]
FIN

À toi de jouer : écris une procédure qui dit PAIR ou IMPAIR selon le nombre. Indice : RESTE :N 2 vaut 0 quand :N est pair.

Étape 7. Se souvenir

Pour compter des points, retenir une position, la tortue a besoin de mémoire. Une variable est un nom qui retient une valeur. On la crée avec DONNE et on la relit avec deux-points :

? DONNE "SCORE 0
? DONNE "SCORE :SCORE + 1
? ECRIS :SCORE            ; affiche 1

« Prends le score, ajoute 1, range-le dans le score. » C'est exactement ainsi qu'on tient un compteur de points dans un jeu. Garde ce mot SCORE en tête : tu vas t'en resservir à la fin.

Étape 8. L'effet waouh

Voici une idée surprenante : une procédure a le droit de s'appeler elle-même. C'est comme une poupée russe qui contient une poupée plus petite, qui en contient une encore plus petite… On appelle ça la récursion, et c'est parfait pour les dessins qui se répètent en plus petit. Un arbre, par exemple : un tronc, puis deux branches plus petites, et chaque branche est elle aussi un petit arbre ! Il faut juste une règle pour s'arrêter, sinon ça continue à l'infini : ici, on arrête quand la branche devient minuscule.

POUR ARBRE :T
  SI :T < 10 [ STOP ]      ; branche trop petite : on arrête
  AV :T
  TG 30 ARBRE :T * 0.7
  TD 60 ARBRE :T * 0.7
  TG 30
  RE :T
FIN

POUR DESSINE_ARBRE
  VE FEN FCAP 0 RE 150 ARBRE 120
FIN

Lance DESSINE_ARBRE. Quelques lignes, et un arbre entier apparaît. C'est souvent le moment où on attrape le virus.

arbre fractal

Chaque branche se divise en deux branches plus petites.

Étape 9. Ça bouge

Jusqu'ici la tortue dessinait. Maintenant elle va bouger dans le temps. Deux ingrédients : ATTENDS fait une petite pause (en soixantièmes de seconde), et une boucle répète le mouvement. Voici un sprite qu'on déplace avec les flèches du clavier (la MANETTE 0 est émulée par les flèches) :

POUR PROMENADE
  VE FEN
  SPRITE 2
  TANTQUE [ NON BOUTON? 0 ] [
    DONNE "D MANETTE 0
    SI :D = 1 [ FCAP 0 AV 10 ]     ; haut
    SI :D = 5 [ FCAP 180 AV 10 ]   ; bas
    SI :D = 3 [ FCAP 90 AV 10 ]    ; droite
    SI :D = 7 [ FCAP 270 AV 10 ]   ; gauche
    ATTENDS 2
  ]
FIN

Lance PROMENADE et pilote la voiture aux flèches. Appuie sur la barre d'espace (le bouton de tir) pour t'arrêter. TANTQUE répète le bloc tant que sa condition est vraie : ici, tant que le bouton n'est pas pressé.

Le champ FEN (fenêtre) laisse la tortue se promener sans buter sur les bords. C'est le mode qu'on utilise pour les jeux.

Étape 10. Dessine tes propres formes

Jusqu'ici la tortue avait une forme toute faite. Mais tu peux lui en dessiner une toi-même ! La commande DEFSPRITE te laisse créer une forme sur une petite grille de 16 cases sur 16, un peu comme du pixel art. Chaque ligne est une suite de caractères : un point . pour une case vide, une lettre (par exemple X) pour une case pleine. Dessinons une balle ronde et une brique :

DEFSPRITE 3 [
  ..XXXX..
  .XXXXXX.
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  .XXXXXX.
  ..XXXX..
]

DEFSPRITE 4 [
  XXXXXXXXXXXXXX
  XXXXXXXXXXXXXX
  XXXXXXXXXXXXXX
  XXXXXXXXXXXXXX
]

Regarde bien la première : si tu plisses les yeux, les X dessinent un rond. La forme numéro 3 est maintenant ta balle ronde, la numéro 4 ta brique. Tu les choisis avec SPRITE, comme les formes toutes faites :

VE MT
SPRITE 3     ; la tortue devient une balle ronde
FCC 1        ; en rouge (la forme prend la couleur du crayon)

Deux choses à retenir : les numéros de tes formes commencent à 3 (0, 1 et 2 sont les formes intégrées, triangle, tortue et voiture), et ta forme prend la couleur du crayon (FCC) et tourne avec la tortue.

À toi de jouer : dessine ta propre forme, un vaisseau, un cœur, un bonhomme. Tu pourras t'en servir dans le jeu, à la fin : une vraie balle ronde (SPRITE 3) et de vraies briques (SPRITE 4), c'est tout de suite plus joli que des triangles.

Étape 11. La balle qui rebondit

Avant de faire un jeu, il manque une brique essentielle : une balle qui rebondit sur les bords. Ça a l'air compliqué, mais l'idée est toute simple.

Imagine que la balle avance par petits pas, image après image. À chaque pas, elle se décale : un peu vers la droite, un peu vers le haut. On range ces deux décalages dans deux variables : :DX (de combien on va vers la droite en x) et :DY (de combien on monte en y). Tant qu'on ne touche rien, on répète : avance de :DX et de :DY, encore et encore.

Maintenant, le rebond. Pense à une vraie balle que tu lances contre le mur de droite : elle repart vers la gauche. Son déplacement vertical ne change pas, c'est seulement son déplacement horizontal qui s'inverse. En Logo, inverser un nombre, c'est faire 0 - :DX (si :DX valait 9, ça donne −9 ; la balle ira maintenant vers la gauche). Pareil en haut et en bas, mais c'est :DY qui s'inverse. Voilà :

POUR INITBALLE
  VE FEN
  DEFSPRITE 3 [
  ..XXXX..
  .XXXXXX.
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  .XXXXXX.
  ..XXXX..
  ]
  FIXETORTUE 0 SPRITE 3 FCC 7 MT LC FXY 0 0   ; on reprend la balle ronde (forme 3) de l'étape 10, en blanc
  DONNE "DX 9 DONNE "DY 6
FIN

POUR REBOND
  SI XCOR + :DX > 780 [ DONNE "DX 0 - :DX ]
  SI XCOR + :DX < -780 [ DONNE "DX 0 - :DX ]
  SI YCOR + :DY > 480 [ DONNE "DY 0 - :DY ]
  SI YCOR + :DY < -480 [ DONNE "DY 0 - :DY ]
  FXY XCOR + :DX YCOR + :DY
FIN

POUR ANIMEBALLE
  INITBALLE
  REPETE 300 [ REBOND ATTENDS 1 ]
FIN

Lance ANIMEBALLE : la balle file en diagonale et rebondit dans tous les coins. Décortiquons REBOND, ligne par ligne :

On vérifie le bord avant de bouger, comme ça la balle ne dépasse jamais. C'est exactement le truc qu'on réutilisera dans le jeu.

À toi de jouer : change :DX et :DY pour une balle plus rapide ou plus lente. Mets FIXETAILLECRAYON 6 avant et baisse le crayon (BC) pour qu'elle laisse une trace.

Étape 12. Ton jeu : le casse-brique

Tu as tout ce qu'il faut. Un casse-brique, ce n'est qu'un assemblage de choses que tu connais déjà : des carrés (les briques), une boucle, des SI, un score, et la balle qui rebondit.

La nouveauté, c'est qu'on va avoir plusieurs tortues à l'écran en même temps, une par objet du jeu. Chaque tortue porte un numéro : la tortue 0 sera la balle, la tortue 1 la raquette, et les tortues 2 à 15 les quatorze briques. Pour donner des ordres à une tortue précise, on tape FIXETORTUE suivi de son numéro : ensuite, les commandes (avancer, se placer, se cacher…) s'adressent à celle-là.

Dessiner les formes du jeu

On a appris à dessiner ses propres sprites à l'étape 10. Servons-nous-en pour donner de vraies formes à nos objets : une balle ronde (forme 3), une raquette toute en largeur (forme 4) et une brique (forme 5).

POUR FORMES
  DEFSPRITE 3 [
    ..XXXX..
    .XXXXXX.
    XXXXXXXX
    XXXXXXXX
    XXXXXXXX
    XXXXXXXX
    .XXXXXX.
    ..XXXX..
  ]
  DEFSPRITE 4 [
    XXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXX
  ]
  DEFSPRITE 5 [
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
  ]
FIN

On choisit ensuite ces formes avec SPRITE 3, SPRITE 4, SPRITE 5, et chaque forme prend la couleur du crayon de sa tortue (FCC) : on fera la balle blanche, la raquette grise et les briques rouges, juste après.

Poser les briques

FIXETORTUE :B choisit la tortue numéro :B (et la crée si elle n'existe pas encore). On veut ranger les 14 briques en grille : 7 colonnes, 2 rangées. La boucle REPETEPOUR [ B 2 15 ] fait passer :B par tous les numéros de 2 à 15, une brique à chaque tour :

POUR POSEBRIQUES
  REPETEPOUR [ B 2 15 ] [
    DONNE "I :B - 2
    DONNE "COL RESTE :I 7
    DONNE "LIG QUOT :I 7
    DONNE "BX 100 * :COL - 300
    DONNE "BY 70 * :LIG + 250
    FIXETORTUE :B SPRITE 5 FCC 1 MT LC FXY :BX :BY
  ]
FIN

Chaque brique prend la forme 5 (SPRITE 5) en rouge (FCC 1). Le calcul du milieu peut sembler mystérieux, mais c'est juste de l'arithmétique de grille. On range d'abord la brique à partir de 0 (:I vaut 0 pour la première, 1 pour la deuxième…). Ensuite :

Pas besoin de tout retenir : l'important, c'est de voir qu'avec une boucle et un petit calcul, on place 14 briques sans écrire 14 fois la même chose.

Préparer la partie

On dessine les formes (FORMES), on prépare l'écran, puis on place la balle blanche au centre-bas et la raquette grise tout en bas :

POUR INITJEU
  FORMES
  VE FEN CT
  DONNE "SCORE 0
  FIXETORTUE 0 SPRITE 3 FCC 7 MT LC FXY 0 -100   ; la balle, blanche
  DONNE "DX 8 DONNE "DY 8
  FIXETORTUE 1 SPRITE 4 FCC 8 MT LC FXY 0 -400   ; la raquette, grise
  POSEBRIQUES
FIN

Casser les briques

On passe en revue les 14 briques et, pour chacune, on demande à GoLogo : « est-ce que la balle la touche ? » C'est le rôle de COLLISION? : COLLISION? LISTE 0 :B rend VRAI si la tortue 0 (la balle) et la tortue :B (la brique) se chevauchent à l'écran. (LISTE 0 :B fabrique juste la petite liste des deux numéros, par exemple [ 0 5 ].)

Quand ça touche, on fait trois choses :

POUR TESTEBRIQUES
  REPETEPOUR [ B 2 15 ] [
    SI COLLISION? LISTE 0 :B [
      DEMANDE :B [ CT ]
      DONNE "DY 0 - :DY
      DONNE "SCORE :SCORE + 1
    ]
  ]
FIN

Une image du jeu

Une « image », c'est tout ce qui se passe en un instant du jeu. Cette fois, on ne rebondit que sur trois murs : gauche, droite et haut. Le bas n'est plus un mur ! On déplace la balle, puis :

Un jeu, au fond, ce n'est que ça : une image, répétée très vite, encore et encore.

POUR FRAME
  FIXETORTUE 0
  SI XCOR + :DX > 780 [ DONNE "DX 0 - :DX ]
  SI XCOR + :DX < -780 [ DONNE "DX 0 - :DX ]
  SI YCOR + :DY > 480 [ DONNE "DY 0 - :DY ]
  FXY XCOR + :DX YCOR + :DY
  SI COLLISION? LISTE 0 1 [ DONNE "DY VALABS :DY ]
  SI YCOR < -480 [ BALLEPERDUE ]
  TESTEBRIQUES
FIN

Quand la balle est perdue

Si la balle file en bas sans que la raquette la rattrape, elle est perdue. On joue un petit son pour le signaler, puis on la relance de sa position de départ, prête à repartir :

POUR BALLEPERDUE
  JOUE "DO                    ; petit « bip » de balle perdue
  FIXETORTUE 0 FXY 0 -100      ; on remet la balle au départ
  DONNE "DX 8 DONNE "DY 8   ; et elle repart vers le haut
FIN

Regarde-le jouer tout seul

Avant même d'ajouter les commandes, lance ça : la balle rebondit partout et casse les briques toute seule. Si tu vois les briques disparaître une à une, ton moteur de jeu fonctionne.

POUR DEMO
  INITJEU
  REPETE 500 [ FRAME ATTENDS 1 ]
FIN

À toi de jouer, pour de vrai

Il ne reste qu'à prendre les commandes. Ajoute la raquette pilotée aux flèches :

POUR BOUGERAQUETTE
  FIXETORTUE 1
  DONNE "D MANETTE 0
  SI :D = 7 [ SI XCOR > -700 [ FXY XCOR - 20 YCOR ] ]
  SI :D = 3 [ SI XCOR < 700 [ FXY XCOR + 20 YCOR ] ]
FIN

POUR PARTIE
  INITJEU
  TANTQUE [ :SCORE < 14 ] [
    BOUGERAQUETTE
    FRAME
    ATTENDS 1
  ]
  FIXETORTUE 0 CT ETIQUETTE [ GAGNE ]
FIN

On appelle la procédure PARTIE. Lance donc PARTIE et déplace la raquette aux flèches. Quand les 14 briques sont cassées, tu as gagné. Bravo : tu viens de programmer un jeu vidéo.

Pour aller plus loin, à toi d'inventer : Tu sais déjà tout faire. Le reste, c'est ton imagination.

Le programme complet

Voici le jeu entier, d'un seul tenant. Recopie tout ça dans l'éditeur (ED), valide avec Ctrl+S, puis tape PARTIE pour jouer :

; --- Dessiner les formes : balle (3), raquette (4), brique (5) ---
POUR FORMES
  DEFSPRITE 3 [
    ..XXXX..
    .XXXXXX.
    XXXXXXXX
    XXXXXXXX
    XXXXXXXX
    XXXXXXXX
    .XXXXXX.
    ..XXXX..
  ]
  DEFSPRITE 4 [
    XXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXX
  ]
  DEFSPRITE 5 [
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
    XXXXXXXXXXXXXX
  ]
FIN

; --- Poser les 14 briques rouges en grille (tortues 2 a 15) ---
POUR POSEBRIQUES
  REPETEPOUR [ B 2 15 ] [
    DONNE "I :B - 2
    DONNE "COL RESTE :I 7
    DONNE "LIG QUOT :I 7
    DONNE "BX 100 * :COL - 300
    DONNE "BY 70 * :LIG + 250
    FIXETORTUE :B SPRITE 5 FCC 1 MT LC FXY :BX :BY
  ]
FIN

; --- Preparer la partie : balle blanche (0), raquette grise (1), briques ---
POUR INITJEU
  FORMES
  VE FEN CT
  DONNE "SCORE 0
  FIXETORTUE 0 SPRITE 3 FCC 7 MT LC FXY 0 -100
  DONNE "DX 8 DONNE "DY 8
  FIXETORTUE 1 SPRITE 4 FCC 8 MT LC FXY 0 -400
  POSEBRIQUES
FIN

; --- Deplacer la raquette avec les fleches ---
POUR BOUGERAQUETTE
  FIXETORTUE 1
  DONNE "D MANETTE 0
  SI :D = 7 [ SI XCOR > -700 [ FXY XCOR - 20 YCOR ] ]
  SI :D = 3 [ SI XCOR < 700 [ FXY XCOR + 20 YCOR ] ]
FIN

; --- Casser les briques touchees par la balle ---
POUR TESTEBRIQUES
  REPETEPOUR [ B 2 15 ] [
    SI COLLISION? LISTE 0 :B [
      DEMANDE :B [ CT ]
      DONNE "DY 0 - :DY
      DONNE "SCORE :SCORE + 1
    ]
  ]
FIN

; --- Balle perdue (passee en bas) : son + relance au depart ---
POUR BALLEPERDUE
  JOUE "DO
  FIXETORTUE 0 FXY 0 -100
  DONNE "DX 8 DONNE "DY 8
FIN

; --- Une image : bouger la balle, rebonds, raquette, briques ---
POUR FRAME
  FIXETORTUE 0
  SI XCOR + :DX > 780 [ DONNE "DX 0 - :DX ]
  SI XCOR + :DX < -780 [ DONNE "DX 0 - :DX ]
  SI YCOR + :DY > 480 [ DONNE "DY 0 - :DY ]
  FXY XCOR + :DX YCOR + :DY
  SI COLLISION? LISTE 0 1 [ DONNE "DY VALABS :DY ]
  SI YCOR < -480 [ BALLEPERDUE ]
  TESTEBRIQUES
FIN

; --- Lancer une partie (tape PARTIE) ---
POUR PARTIE
  INITJEU
  TANTQUE [ :SCORE < 14 ] [
    BOUGERAQUETTE
    FRAME
    ATTENDS 1
  ]
  FIXETORTUE 0 CT ETIQUETTE [ GAGNE ]
FIN

Et maintenant ? Explore les programmes exemples, feuillette la référence des commandes, et continue à bricoler. Tu n'es plus en train d'apprendre à programmer : tu programmes.