Browse Source

:sparkles: Rajoute une case à cocher dans chaque étape

Permet au participant·es de pouvoir s'y retrouver dans les étapes
qu'ielles ont déjà faites.
DricomDragon 2 months ago
parent
commit
c0a38f35bd
1 changed files with 50 additions and 1 deletions
  1. 50 1
      guide/complet.md

+ 50 - 1
guide/complet.md

@@ -257,6 +257,7 @@ scènes qui composent le jeu.
 > Note : L'ensemble de ses fichiers et dossiers doivent être édités dans
 > Note : L'ensemble de ses fichiers et dossiers doivent être édités dans
 l'éditeur de Godot et non directement via le navigateur de fichiers.
 l'éditeur de Godot et non directement via le navigateur de fichiers.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer l'initiation : [Modifier le niveau existant](#modifier-le-niveau-existant)
 	- Continuer l'initiation : [Modifier le niveau existant](#modifier-le-niveau-existant)
 
 
@@ -310,6 +311,7 @@ Niv. 1
             l'Inspecteur pour choisir votre niveau.
             l'Inspecteur pour choisir votre niveau.
         - Modifier le champs "Normal" de la section "Texture" pour
         - Modifier le champs "Normal" de la section "Texture" pour
             changer l'image de la planète.
             changer l'image de la planète.
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Refaire la même étape en créant un autre niveau !
 	- Refaire la même étape en créant un autre niveau !
 	- Pour avoir plus de place pour mettre des niveaux : [Pouvoir scroller les planètes](#pouvoir-scroller-les-planètes)
 	- Pour avoir plus de place pour mettre des niveaux : [Pouvoir scroller les planètes](#pouvoir-scroller-les-planètes)
@@ -382,7 +384,6 @@ La belle image pour votre raquette est disponible dans `composants/objets/raquet
         pouvoir importer votre image.
         pouvoir importer votre image.
 
 
 - [ ] J'ai changé l'image de la raquette !
 - [ ] J'ai changé l'image de la raquette !
-
 - Suite
 - Suite
 	- [Changer la couleur de la raquette](#changer-la-couleur-de-la-raquette)
 	- [Changer la couleur de la raquette](#changer-la-couleur-de-la-raquette)
 
 
@@ -426,6 +427,7 @@ modifier pour changer la couleur de la raquette dans le jeu.
 nœud racine `StaticBody2D`, ce qui change la couleur de tous les
 nœud racine `StaticBody2D`, ce qui change la couleur de tous les
 enfants, y compris l'image.
 enfants, y compris l'image.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer l'initiation : [Avoir un nombre limité de balles](#avoir-un-nombre-limité-de-balles)
 	- Continuer l'initiation : [Avoir un nombre limité de balles](#avoir-un-nombre-limité-de-balles)
 
 
@@ -461,6 +463,7 @@ une valeur à une variable.
 > Astuce : afficher le nombre de balles après chaque
 > Astuce : afficher le nombre de balles après chaque
 	décrémentation avec une fonction `print()`
 	décrémentation avec une fonction `print()`
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer l'initiation : [Afficher le compteur de balles](#afficher-le-compteur-de-balles)
 	- Continuer l'initiation : [Afficher le compteur de balles](#afficher-le-compteur-de-balles)
 
 
@@ -485,6 +488,7 @@ N'hésitez pas à lire l'explication sur les signaux si besoin !
 
 
 > Attention : Si le label renvoie une erreur : "Cannot convert argument 1 from int to String.", cela veut juste dire qu'il faut convertir la valeur de `nombre_de_balles` en String avant d'émettre le signal.
 > Attention : Si le label renvoie une erreur : "Cannot convert argument 1 from int to String.", cela veut juste dire qu'il faut convertir la valeur de `nombre_de_balles` en String avant d'émettre le signal.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer l'initiation : [Afficher un écran de game over](#afficher-un-écran-de-game-over)
 	- Continuer l'initiation : [Afficher un écran de game over](#afficher-un-écran-de-game-over)
 	- Pour les expert·es : [Afficher une jauge de balles](#afficher-une-jauge-de-balles)
 	- Pour les expert·es : [Afficher une jauge de balles](#afficher-une-jauge-de-balles)
@@ -531,6 +535,7 @@ Niv. 1
 
 
 ![Brancher un signal a une methode Godot](img/editor_signal_decocher_methodes_script_seulement.png).
 ![Brancher un signal a une methode Godot](img/editor_signal_decocher_methodes_script_seulement.png).
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Étape bonus : [Afficher un écran de victoire](#afficher-un-écran-de-victoire)
 	- Étape bonus : [Afficher un écran de victoire](#afficher-un-écran-de-victoire)
 	- Continuer l'initiation : [Faire accélérer la balle](#faire-accélérer-la-balle)
 	- Continuer l'initiation : [Faire accélérer la balle](#faire-accélérer-la-balle)
@@ -556,6 +561,7 @@ Niv. 3 : beaucoup d'étapes
 > Note : comme les balles créées par le lanceur sont des nœuds enfants,
 > Note : comme les balles créées par le lanceur sont des nœuds enfants,
 détruire le lanceur détruit aussi toutes les balles.
 détruire le lanceur détruit aussi toutes les balles.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer l'initiation : [Faire accélérer la balle](#faire-accélérer-la-balle)
 	- Continuer l'initiation : [Faire accélérer la balle](#faire-accélérer-la-balle)
 
 
@@ -595,6 +601,7 @@ la lecture et la maintenance du code.
 Par exemple, `_vitesse` est une variable privée ; seule la balle elle-même
 Par exemple, `_vitesse` est une variable privée ; seule la balle elle-même
 a le droit de la modifier, car c'est sa responsabilité.
 a le droit de la modifier, car c'est sa responsabilité.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -682,6 +689,7 @@ positionnel en 3 dimensions).
 - Référence
 - Référence
     - Le nœud AudioStreamPlayer :
     - Le nœud AudioStreamPlayer :
         <https://docs.godotengine.org/fr/4.x/classes/class_audiostreamplayer.html>
         <https://docs.godotengine.org/fr/4.x/classes/class_audiostreamplayer.html>
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer : [Faire un bruit au game over](#faire-un-bruit-au-game-over)
 	- Continuer : [Faire un bruit au game over](#faire-un-bruit-au-game-over)
 	- Étape bonus : [Faire un bruit au clic sur bouton début](#faire-un-bruit-au-clic-sur-bouton-début)
 	- Étape bonus : [Faire un bruit au clic sur bouton début](#faire-un-bruit-au-clic-sur-bouton-début)
@@ -722,6 +730,7 @@ Niv. 2
 			Puis ajouter `%SonClic.play()`
 			Puis ajouter `%SonClic.play()`
             dans la fonction `_quand_planete_est_cliquee()` dans
             dans la fonction `_quand_planete_est_cliquee()` dans
             le script `planete.gd`.
             le script `planete.gd`.
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer : [Faire un bruit au game over](#faire-un-bruit-au-game-over)
 	- Continuer : [Faire un bruit au game over](#faire-un-bruit-au-game-over)
 
 
@@ -743,6 +752,7 @@ Niv. 1
     - Dans le champs Bus dans l'inspecteur, sélectionner : Bruits
     - Dans le champs Bus dans l'inspecteur, sélectionner : Bruits
     - Brancher le signal "visibility_changed()" du nœud "OhNon" ou du nœud "CommandeRetour" sur la fonction play() de l'AudioStreamPlayer.
     - Brancher le signal "visibility_changed()" du nœud "OhNon" ou du nœud "CommandeRetour" sur la fonction play() de l'AudioStreamPlayer.
 		- Note : si vous ne voyez pas la fonction play, ecrivez son nom.
 		- Note : si vous ne voyez pas la fonction play, ecrivez son nom.
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Faire un bruit à l’impact d’une balle](#faire-un-bruit-à-limpact-dune-balle)
 	- [Faire un bruit à l’impact d’une balle](#faire-un-bruit-à-limpact-dune-balle)
 
 
@@ -766,6 +776,7 @@ Niv 1
     - Dans l'inspecteur de l'AudioStreamPlayer affecter le champs
     - Dans l'inspecteur de l'AudioStreamPlayer affecter le champs
         "Bus" au bus : Bruits
         "Bus" au bus : Bruits
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Parcours [artisan artiste graphique](#faire-une-trainée-à-la-balle)
 	- Parcours [artisan artiste graphique](#faire-une-trainée-à-la-balle)
 	- Parcours [artisan artiste audio](#effet-audio-dynamique-sur-le-menu-pause)
 	- Parcours [artisan artiste audio](#effet-audio-dynamique-sur-le-menu-pause)
@@ -801,6 +812,7 @@ préférable de l'utiliser car plus performant ; cependant ça ne marche
 pas sur toutes les machines. Auquel cas, on utilisera CPUParticles2D
 pas sur toutes les machines. Auquel cas, on utilisera CPUParticles2D
 (<https://docs.godotengine.org/fr/4.x/classes/class_cpuparticles2d.html#class-cpuparticles2d)>.
 (<https://docs.godotengine.org/fr/4.x/classes/class_cpuparticles2d.html#class-cpuparticles2d)>.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Effet impact d’une balle](#effet-impact-dune-balle)
 	- [Effet impact d’une balle](#effet-impact-dune-balle)
 
 
@@ -829,6 +841,7 @@ Niv. 3
         - Instancier la scène et l'ajouter à l'arbre au moment du
         - Instancier la scène et l'ajouter à l'arbre au moment du
             rebond dans le script de la balle.
             rebond dans le script de la balle.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Parcours [artisan artiste audio](#effet-audio-dynamique-sur-le-menu-pause)
 	- Parcours [artisan artiste audio](#effet-audio-dynamique-sur-le-menu-pause)
 	- Retour au [carrefour Godot](#le-carrefour-godot)
 	- Retour au [carrefour Godot](#le-carrefour-godot)
@@ -862,6 +875,7 @@ et activer l'un de ses effets.
         désactiver l'effet quand le menu pause se ferme.
         désactiver l'effet quand le menu pause se ferme.
 - Documentation
 - Documentation
     - [Manipuler les bus audio avec la classe AudioServer](https://docs.godotengine.org/fr/4.x/classes/class_audioserver.html#class-audioserver-method-set-bus-effect-enabled)
     - [Manipuler les bus audio avec la classe AudioServer](https://docs.godotengine.org/fr/4.x/classes/class_audioserver.html#class-audioserver-method-set-bus-effect-enabled)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Effet audio dynamique : diminuer l’importance de la musique quand un effet sonore joue](#effet-audio-dynamique-diminuer-limportance-de-la-musique-quand-un-effet-sonore-joue)
 	- [Effet audio dynamique : diminuer l’importance de la musique quand un effet sonore joue](#effet-audio-dynamique-diminuer-limportance-de-la-musique-quand-un-effet-sonore-joue)
 
 
@@ -921,6 +935,7 @@ sonores joues (contenu du bus "Bruits").
     quand les effets sonores seront joués.
     quand les effets sonores seront joués.
 
 
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Parcours [artisan artiste graphique](#faire-une-trainée-à-la-balle) (si vous ne l'avez pas déjà fait)
 	- Parcours [artisan artiste graphique](#faire-une-trainée-à-la-balle) (si vous ne l'avez pas déjà fait)
 	- Retour au [carrefour Godot](#le-carrefour-godot)
 	- Retour au [carrefour Godot](#le-carrefour-godot)
@@ -958,6 +973,7 @@ utilisée pour modifier le nombre de vie (set = set_nombre_de_vies),
 qui rafraichit la couleur de la brique dès que le nombre de points de
 qui rafraichit la couleur de la brique dès que le nombre de points de
 vie est modifié.
 vie est modifié.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Changer la couleur de la brique en fonction de sa vie](#changer-la-couleur-de-la-brique-en-fonction-de-sa-vie)
 	- [Changer la couleur de la brique en fonction de sa vie](#changer-la-couleur-de-la-brique-en-fonction-de-sa-vie)
 
 
@@ -988,6 +1004,7 @@ qu'il s'exécute aussi dans l'éditeur. Cela permet de voir le
 changement de couleur aussi dans l'éditeur lorsque vous fabriquez un
 changement de couleur aussi dans l'éditeur lorsque vous fabriquez un
 niveau.
 niveau.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Faire descendre les briques au fil du temps](#faire-descendre-les-briques-au-fil-du-temps)
 	- [Faire descendre les briques au fil du temps](#faire-descendre-les-briques-au-fil-du-temps)
 
 
@@ -1005,6 +1022,7 @@ Complètement facultatif.
     - Créer une constante vitesse_de_descente := 5.0 # px/sec.
     - Créer une constante vitesse_de_descente := 5.0 # px/sec.
     - Appliquer la descente à chaque image (frame) via la fonction
     - Appliquer la descente à chaque image (frame) via la fonction
         "_physics_process".
         "_physics_process".
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Faire perdre la partie si une brique sort du terrain](#faire-perdre-la-partie-si-une-brique-sort-du-terrain)
 	- [Faire perdre la partie si une brique sort du terrain](#faire-perdre-la-partie-si-une-brique-sort-du-terrain)
 
 
@@ -1027,6 +1045,7 @@ Niv. 4
         est détectée par la zone extérieure
         est détectée par la zone extérieure
     - Relier ce signal au même signal que le game over classique
     - Relier ce signal au même signal que le game over classique
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Retour [au carrefour Godot](#le-carrefour-godot)
 	- Retour [au carrefour Godot](#le-carrefour-godot)
 	- Pour les expert·es : [Faire un obstacle avec une nouvelle forme](#faire-un-obstacle-avec-une-nouvelle-forme)
 	- Pour les expert·es : [Faire un obstacle avec une nouvelle forme](#faire-un-obstacle-avec-une-nouvelle-forme)
@@ -1086,6 +1105,7 @@ Niv. 3
         <https://docs.godotengine.org/fr/4.x/tutorials/scripting/scene_tree.html>
         <https://docs.godotengine.org/fr/4.x/tutorials/scripting/scene_tree.html>
 
 
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Parcours bonus [pour rendre la récup de pouvoir plus juteuse](#bruit-lorsquun-pouvoir-est-récupéré) 
 	- Parcours bonus [pour rendre la récup de pouvoir plus juteuse](#bruit-lorsquun-pouvoir-est-récupéré) 
@@ -1114,6 +1134,7 @@ Niv. 1
             dans le dossier "effets"
             dans le dossier "effets"
         - Instancier un AudioStreamPlayer2D depuis le code (même
         - Instancier un AudioStreamPlayer2D depuis le code (même
             emplacement que le signal possibilité 1)
             emplacement que le signal possibilité 1)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours bonus : [Afficher le nom du pouvoir lorsqu’il est récupéré](#afficher-le-nom-du-pouvoir-lorsquil-est-récupéré)
 	- Continuer parcours bonus : [Afficher le nom du pouvoir lorsqu’il est récupéré](#afficher-le-nom-du-pouvoir-lorsquil-est-récupéré)
@@ -1145,6 +1166,7 @@ Niv. 3
 
 
 > Note : lorsque l'on appelle la méthode `VieBonus.nom_pouvoir()`, la méthode `PouvoirBase.nom_pouvoir()` n'est pas appelée. Cette mécanique s'appelle la surcharge.
 > Note : lorsque l'on appelle la méthode `VieBonus.nom_pouvoir()`, la méthode `PouvoirBase.nom_pouvoir()` n'est pas appelée. Cette mécanique s'appelle la surcharge.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours bonus : [Effet de récupération de pouvoir](#effet-de-récupération-de-pouvoir)
 	- Continuer parcours bonus : [Effet de récupération de pouvoir](#effet-de-récupération-de-pouvoir)
@@ -1170,6 +1192,7 @@ Niv. 4
 - Documentation
 - Documentation
     - [Référence AnimatedSprite2D][https://docs.godotengine.org/fr/4.x/classes/class_animatedsprite2d.html]
     - [Référence AnimatedSprite2D][https://docs.godotengine.org/fr/4.x/classes/class_animatedsprite2d.html]
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 	- Continuer parcours [super artisan](#pouvoir-de-vieballes-supplémentaires)
 
 
@@ -1203,6 +1226,7 @@ Niv. 3
 ![Capture de l'ajout du groupe des lanceurs](editor_gd4_raquette_ajout_groupe_des_lanceurs.png)
 ![Capture de l'ajout du groupe des lanceurs](editor_gd4_raquette_ajout_groupe_des_lanceurs.png)
 
 
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Pouvoir de feu](#pouvoir-de-feu)
 	- [Pouvoir de feu](#pouvoir-de-feu)
 
 
@@ -1232,6 +1256,7 @@ feu, qui existe et que vous pouvez regarder.
 > Note : une méthode statique est une fonction qui peut être appelée sans
 > Note : une méthode statique est une fonction qui peut être appelée sans
 avoir à créer l'objet associé.
 avoir à créer l'objet associé.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Bonus de style : [Effet de flamme](#effet-de-flamme)
 	- Bonus de style : [Effet de flamme](#effet-de-flamme)
 	- [Pouvoir électrique](#pouvoir-électrique)
 	- [Pouvoir électrique](#pouvoir-électrique)
@@ -1280,6 +1305,7 @@ dans une variable pour éviter de demander à Godot de chercher le nœud à
 chaque fois.
 chaque fois.
 `@onready image : Sprite2D = $Image`
 `@onready image : Sprite2D = $Image`
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Pouvoir électrique](#pouvoir-électrique)
 	- [Pouvoir électrique](#pouvoir-électrique)
 	
 	
@@ -1308,6 +1334,7 @@ briques à distance.
 - Docs
 - Docs
     - [Référence nœud Timer](https://docs.godotengine.org/fr/4.x/classes/class_timer.html)
     - [Référence nœud Timer](https://docs.godotengine.org/fr/4.x/classes/class_timer.html)
     - [Référence timer sans nœud](https://docs.godotengine.org/fr/4.x/classes/class_scenetree.html#class-scenetree-method-create-timer)
     - [Référence timer sans nœud](https://docs.godotengine.org/fr/4.x/classes/class_scenetree.html#class-scenetree-method-create-timer)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Bonus de style : [Effet électrique](#effet-électrique)
 	- Bonus de style : [Effet électrique](#effet-électrique)
 	- [Pouvoir laser](#pouvoir-laser)
 	- [Pouvoir laser](#pouvoir-laser)
@@ -1331,6 +1358,7 @@ Niv. 4
     - Mode expert : alterner aussi avec une seconde image
     - Mode expert : alterner aussi avec une seconde image
 - Doc
 - Doc
     - [Référence : AnimatedSprite2D](https://docs.godotengine.org/fr/4.x/classes/class_sprite2d.html)
     - [Référence : AnimatedSprite2D](https://docs.godotengine.org/fr/4.x/classes/class_sprite2d.html)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Pouvoir laser](#pouvoir-laser)
 	- [Pouvoir laser](#pouvoir-laser)
 
 
@@ -1371,6 +1399,7 @@ Permet à la raquette de lancer un javelot à haute énergie qui détruit tout s
 - Docs
 - Docs
     - [Comment utiliser les Area2D](https://docs.godotengine.org/fr/4.x/tutorials/physics/using_area_2d.html)
     - [Comment utiliser les Area2D](https://docs.godotengine.org/fr/4.x/tutorials/physics/using_area_2d.html)
     - [Référence Area2D](https://docs.godotengine.org/fr/4.x/classes/class_area2d.html)
     - [Référence Area2D](https://docs.godotengine.org/fr/4.x/classes/class_area2d.html)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Bonus de style : [Effet d’éruption de la raquette](#effet-déruption-de-la-raquette)
 	- Bonus de style : [Effet d’éruption de la raquette](#effet-déruption-de-la-raquette)
 	- [Pouvoir balle spectrale](#pouvoir-balle-spectrale)
 	- [Pouvoir balle spectrale](#pouvoir-balle-spectrale)
@@ -1388,6 +1417,7 @@ Permet à la raquette de lancer un javelot à haute énergie qui détruit tout s
         - Désactiver la lecture en boucle
         - Désactiver la lecture en boucle
     - Auto-détruire l'effet après l'animation
     - Auto-détruire l'effet après l'animation
         - Brancher le signal `animation_finished` à la méthode `queue_free()` du nœud racine
         - Brancher le signal `animation_finished` à la méthode `queue_free()` du nœud racine
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Pouvoir balle spectrale](#pouvoir-balle-spectrale)
 	- [Pouvoir balle spectrale](#pouvoir-balle-spectrale)
 
 
@@ -1405,6 +1435,7 @@ rebond contre un mur.
 
 
 - Docs
 - Docs
     - [Masques de collision](https://docs.godotengine.org/en/4.2/tutorials/physics/physics_introduction.html#collision-layers-and-masks)
     - [Masques de collision](https://docs.godotengine.org/en/4.2/tutorials/physics/physics_introduction.html#collision-layers-and-masks)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- Vous avez de l'inspiration ? [Faire un nouveau pouvoir de balle](#faire-un-nouveau-pouvoir-de-balle)
 	- Vous avez de l'inspiration ? [Faire un nouveau pouvoir de balle](#faire-un-nouveau-pouvoir-de-balle)
@@ -1422,6 +1453,7 @@ Niv. 4
 	- Balle collante : La balle colle à la raquette, et peut être renvoyée avec un clic ou un
 	- Balle collante : La balle colle à la raquette, et peut être renvoyée avec un clic ou un
 	appui sur espace.
 	appui sur espace.
 	- Balle magnétique : La balle est attirée par la raquette
 	- Balle magnétique : La balle est attirée par la raquette
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- Vous avez encore de l'inspiration ? [Faire un nouveau pouvoir de balle](#faire-un-nouveau-pouvoir-de-balle)
 	- Vous avez encore de l'inspiration ? [Faire un nouveau pouvoir de balle](#faire-un-nouveau-pouvoir-de-balle)
@@ -1431,6 +1463,7 @@ Niv. 4
 
 
 
 
 - [Documentation](https://docs.godotengine.org/fr/4.x/tutorials/export/exporting_projects.html)
 - [Documentation](https://docs.godotengine.org/fr/4.x/tutorials/export/exporting_projects.html)
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Exporter le jeu au format Windows](#exporter-le-jeu-au-format-windows)
 	- [Exporter le jeu au format Windows](#exporter-le-jeu-au-format-windows)
 
 
@@ -1442,6 +1475,7 @@ Pareil que pour Linux.
 
 
 Vous pouvez utiliser Wine pour contrôler votre export.
 Vous pouvez utiliser Wine pour contrôler votre export.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Exporter pour le web](#exporter-pour-le-web)
 	- [Exporter pour le web](#exporter-pour-le-web)
 
 
@@ -1452,6 +1486,7 @@ Pour itch.io, nommez l'artefact produit `index` afin d'avoir un index.html.
 
 
 Faites une archive.
 Faites une archive.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Exporter pour Android](#exporter-pour-android)
 	- [Exporter pour Android](#exporter-pour-android)
 
 
@@ -1464,6 +1499,7 @@ Pour les plus experts d'entre vous.
 
 
 Le plus facile est d'utiliser [l'image docker pour CI Godot](https://github.com/abarichello/godot-ci/tree/master).
 Le plus facile est d'utiliser [l'image docker pour CI Godot](https://github.com/abarichello/godot-ci/tree/master).
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -1489,6 +1525,7 @@ Niv. 3
         <https://docs.godotengine.org/fr/4.x/tutorials/physics/physics_introduction.html#collision-layers-and-masks>
         <https://docs.godotengine.org/fr/4.x/tutorials/physics/physics_introduction.html#collision-layers-and-masks>
     - Référence :
     - Référence :
         <https://docs.godotengine.org/fr/4.x/classes/class_collisionobject2d.html#class-collisionobject2d-property-collision-layer>
         <https://docs.godotengine.org/fr/4.x/classes/class_collisionobject2d.html#class-collisionobject2d-property-collision-layer>
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Faire une brique avec une nouvelle forme](#faire-une-brique-avec-une-nouvelle-forme)
 	- [Faire une brique avec une nouvelle forme](#faire-une-brique-avec-une-nouvelle-forme)
     - Refaire cette étape avec une autre forme.
     - Refaire cette étape avec une autre forme.
@@ -1514,6 +1551,7 @@ Niv. 4
 > Note : comme votre nouvelle brique a le même script que la brique de
 > Note : comme votre nouvelle brique a le même script que la brique de
 base, les deux ont le même comportement !
 base, les deux ont le même comportement !
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -1527,6 +1565,7 @@ Niv. 4 : le·a participant·e cherche par lui-même une solution ;-)
 
 
 On pourra imaginer que le nombre de points dépend du temps. Plus un niveau est terminé rapidement, plus il y a de points ! On peut supposer que le nombre de briques détruites influe aussi sur le nombre de points.
 On pourra imaginer que le nombre de points dépend du temps. Plus un niveau est terminé rapidement, plus il y a de points ! On peut supposer que le nombre de briques détruites influe aussi sur le nombre de points.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Collectibles qui donne des points](#collectibles-qui-donne-des-points)
 	- [Collectibles qui donne des points](#collectibles-qui-donne-des-points)
 
 
@@ -1543,6 +1582,7 @@ Niv. 4
     - Créer un pouvoir "ScoreBonus" (voir ci-dessous).
     - Créer un pouvoir "ScoreBonus" (voir ci-dessous).
     - Associer un groupe à votre compteur de score.
     - Associer un groupe à votre compteur de score.
     - Incrémenter le score quand le pouvoir est déclenché.
     - Incrémenter le score quand le pouvoir est déclenché.
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Choisir la couleur de la raquette](#choisir-la-couleur-de-la-raquette)
 	- [Choisir la couleur de la raquette](#choisir-la-couleur-de-la-raquette)
 
 
@@ -1563,6 +1603,7 @@ Niv. 4
             l'enveloppe physique !
             l'enveloppe physique !
     - Dans le déclenchement du pouvoir, appeler la méthode
     - Dans le déclenchement du pouvoir, appeler la méthode
         "changer_taille" sur toutes les raquettes.
         "changer_taille" sur toutes les raquettes.
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Malus diminution taille de raquette](#malus-diminution-taille-de-raquette)
 	- [Malus diminution taille de raquette](#malus-diminution-taille-de-raquette)
 
 
@@ -1577,6 +1618,7 @@ Niv. 4
 
 
 - Idem ci-dessus, modulo le facteur de taille.
 - Idem ci-dessus, modulo le facteur de taille.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -1590,6 +1632,7 @@ Permettre au joueur de pouvoir choisir la couleur de sa raquette depuis le menu.
 
 
 C'est à vous de trouver comment faire !
 C'est à vous de trouver comment faire !
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Choisir un pseudo](#choisir-un-pseudo)
 	- [Choisir un pseudo](#choisir-un-pseudo)
 
 
@@ -1601,6 +1644,7 @@ Permettre au joueur de pouvoir choisir son pseudo depuis le menu.
 
 
 Bon courage. :-)
 Bon courage. :-)
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Bonus : [Afficher le pseudo en jeu](#afficher-le-pseudo-en-jeu)
 	- Bonus : [Afficher le pseudo en jeu](#afficher-le-pseudo-en-jeu)
 	- Faire un [leaderboard](#leaderboard)
 	- Faire un [leaderboard](#leaderboard)
@@ -1613,6 +1657,7 @@ Bon courage. :-)
 
 
 Niv. 4 : le·a participant·e cherche par lui-même une solution ;-)
 Niv. 4 : le·a participant·e cherche par lui-même une solution ;-)
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Faire un [leaderboard](#leaderboard)
 	- Faire un [leaderboard](#leaderboard)
 
 
@@ -1626,6 +1671,7 @@ Afficher la liste meilleurs scores sur l'écran de game-over.
 
 
 Les scores doivent être sauvegardés dans un fichier.
 Les scores doivent être sauvegardés dans un fichier.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -1637,6 +1683,7 @@ Niv. 4
 
 
 Attribut par niveau, script niveau.
 Attribut par niveau, script niveau.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Faire une carte de niveaux interactive](#faire-une-carte-de-niveaux-interactive)
 	- [Faire une carte de niveaux interactive](#faire-une-carte-de-niveaux-interactive)
 
 
@@ -1648,6 +1695,7 @@ Niv. 4
 
 
 Ça peut être ce que vous voulez pour rendre le choix du niveau plus vivant.
 Ça peut être ce que vous voulez pour rendre le choix du niveau plus vivant.
 
 
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)
 
 
@@ -1663,6 +1711,7 @@ Remplacer le label par une jauge, dont le nombre de points représente le nombre
 
 
 
 
 - Remplacer un control par un nœud plus avancé fourni par Godot
 - Remplacer un control par un nœud plus avancé fourni par Godot
+- [ ] J'ai fait cette étape.
 - Suite
 - Suite
 	- Continuer initiation avec [Afficher un écran de game over](#afficher-un-écran-de-game-over)
 	- Continuer initiation avec [Afficher un écran de game over](#afficher-un-écran-de-game-over)
 	- [Le carrefour Godot](#le-carrefour-godot)
 	- [Le carrefour Godot](#le-carrefour-godot)