4 Commits a85857d377 ... e9e23a89dc

Author SHA1 Message Date
  DricomDragon e9e23a89dc :memo: Explique les signaux lors de sa premiere utilisation 4 days ago
  DricomDragon bbca496437 :memo: Revise le guide jusqu'a l'affichage du compteur de balles 4 days ago
  DricomDragon 0eeaaf0d45 :memo: Stocke les ids 5 days ago
  DricomDragon 6084944e01 :memo: Corrige les fautes d'orthographe 5 days ago
3 changed files with 89 additions and 83 deletions
  1. 3 0
      guide/.gitignore
  2. 8 0
      guide/README.md
  3. 78 83
      guide/complet.md

+ 3 - 0
guide/.gitignore

@@ -8,3 +8,6 @@
 ## QOwnNotes
 trash/
 notes.sqlite
+
+## Temp
+ids.txt

+ 8 - 0
guide/README.md

@@ -14,3 +14,11 @@ Tutoriel pour développer Raquette fracassante.
 ```sh
 pandoc -o complet.html complet.md --standalone --wrap=none --metadata title="Guide Godot JDLL 2024" --css=https://matcha.mizu.sh/matcha.css --toc --toc-depth=5
 ```
+
+### Ids
+
+Pour s'aider pour faire les liens.
+
+```sh
+grep complet.html -e 'id=' > ids.txt
+```

+ 78 - 83
guide/complet.md

@@ -61,16 +61,16 @@ Légende de la carte :
 - Le nombre de triangles sur chaque case de la carte indique la difficulté. 1 étant facile, et 4 difficile.
 
 
-#### Décommenter le code
+#### Dé-commenter le code
 
-Il y aura du code déjà présent à décommenter dans les scripts. Essayez
+Il y aura du code déjà présent à dé-commenter dans les scripts. Essayez
 de comprendre chaque bout de code vous-même.
 
-Les commentaires en Godot commencent avec `#`. Raccourci pour décommenter
-les lignes selectionnées : `Ctrl` + `K`.
+Les commentaires en Godot commencent avec `#`. Raccourci pour dé-commenter
+les lignes sélectionnées : `Ctrl` + `K`.
 
 Note : les commentaires doubles `##` sont des commentaires spéciaux dits
-de documentation (docstrings). Il ne faut pas les décommenter ! Le texte
+de documentation (docstrings). Il ne faut pas les dé-commenter ! Le texte
 associé est visible dans l'éditeur.
 
 
@@ -97,8 +97,8 @@ Partie théorique pour avoir un peu de contexte.
     - Beaucoup d'outils accessibles sans code ;
     - GDScript (langage interne) facile à lire pour les débutants et
         débutantes ;
-    - Possibilité de coder en C++ pour les développeureuses (ou
-        d'autres languages via des addons) ;
+    - Possibilité de coder en C++ pour les développeur·euses (ou
+        d'autres langages via des addons) ;
     - Bibliothèque d'addons disponible dans le moteur directement ;
     - Aide accessible directement dans le moteur ;
     - Espace de travail modulaire pour s'adapter aux préférences de
@@ -145,7 +145,7 @@ Partie théorique pour avoir un peu de contexte.
         besoin d'écrire beaucoup de texte pour faire fonctionner notre
         jeu. Pour qu'un script soit interprété par Godot, il faut
         l'attacher à un nœud, via l'éditeur.
-    - Definition **variable** : valeur qui peut changer en cours du
+    - Définition **variable** : valeur qui peut changer en cours du
         temps, que nous pouvons lire ou écrire depuis un script via son
         nom (exemple : boolean a_perdu_vie ; Vector2
         direction_rebond).
@@ -153,7 +153,7 @@ Partie théorique pour avoir un peu de contexte.
             attribut (exemple : Vector2 position pour un Node2D).
         - Une variable qui est une entrée d'une fonction s'appelle
             un **argument**
-    - Definition **fonction** : bout de script associé à un nom qui
+    - Définition **fonction** : bout de script associé à un nom qui
         est exécuté quand on l'appelle.
         - Une fonction attachée à un nœud s'appelle aussi **méthode**
         - Le nom d'une fonction doit contenir un verbe, car appeler
@@ -183,21 +183,6 @@ Partie théorique pour avoir un peu de contexte.
             vous héritez de Sprite2D, qui hérite lui-même de Node2D,
             votre script possède à la fois les propriétés de Sprite2D
             (comme texture par exemple) et de Node2D (position).
-- Signaux (médium)
-
-Mécanique idéale pour faire communiquer des nœuds entre eux. Les signaux
-permettent d'envoyer des messages à zéro, un ou plusieurs destinataires
-en même temps. À chaque émission de signal correspond l'exécution
-d'une fonction pour tous les nœuds connectés à ce signal. Les nœuds de
-la bibliothèque offrent des signaux et des fonctions déjà utilisables,
-et il est possible d'en créer dans nos scripts.
-
-- Pas à pas :
-        <https://docs.godotengine.org/fr/4.x/getting_started/step_by_step/signals.html>
-    - Utiliser un signal dans un script :
-        <https://docs.godotengine.org/fr/4.x/tutorials/scripting/gdscript/gdscript_basics.html#signals>
-    - Référence :
-        <https://docs.godotengine.org/fr/4.x/classes/class_signal.html>
 
 - Espace / géométrie
     - Les objets 2D sont positionnés dans l'espace via deux
@@ -236,9 +221,9 @@ scènes qui composent le jeu.
 		script, visuels et sons pour : les interfaces, les objets
 		(balle, brique, capsule, arène, raquette, etc) et enfin les
 		pouvoirs (balle de feu par exemple).
-	- "Effets", qui contient les phénomènes éphèmères qui peuvent
+	- "Effets", qui contient les phénomènes éphémères qui peuvent
 		survenir en jeu. Au début de l'atelier le seul présent dans
-		la versian artisan est l'effet d'une brique qui éclate.
+		la version artisan est l'effet d'une brique qui éclate.
 	- "Exec", qui contient les principales scènes du jeu qui
 		vont "s'exécuter". On y trouve la scène principale du jeu
 		("game"), une scène de gestion de la musique et deux
@@ -286,7 +271,7 @@ Niv. 1
         - Ligne primaire tous les : x = 4 pas, et y = 8 pas.
     - Dupliquer les nœuds Brique pour en créer de nouveaux et
         placer-les dans le niveau.
-    - Changer les paramètres de chaque brique indépendament dans
+    - Changer les paramètres de chaque brique indépendamment dans
         l'Inspecteur.
 
 Image : Capture de la configuration de la grille
@@ -295,7 +280,7 @@ Image : Capture de la configuration de la grille
 - [ ] J'ai modifié un niveau existant !
 - Suite
 	- Parcours architecte : [Créer un autre niveau](#créer-un-autre-niveau)
-	- Parcours artisan : [Changer l'image de la raquette](#)
+	- Parcours artisan : [Changer l'image de la raquette](#todo)
 	- Étape bonus : [Pouvoir scroller les planètes](#pouvoir-scroller-les-planètes) 
 
 
@@ -327,9 +312,6 @@ Niv. 1
 Niv. 1
 
 
-- Prérequis
-    - Scène "choix_niveau.tscn" qui permet déjà de choisir un
-        niveau.
 - Actions
     - Ajouter un nœud ScrollContainer dans la scène
         "choix_niveau.tscn"
@@ -340,7 +322,7 @@ Niv. 1
         - Soit dans l'Inspecteur, section "Transform", champs
             "Size", mettre les valeurs de X et Y à 420.
 
-- [ ] J'ai modifié un niveau existant !
+- [ ] J'ai activé le scrolling dans le choix du niveau !
 - Suite
 	- Parcours architecte : [Créer un autre niveau](#créer-un-autre-niveau)
 	- Parcours artisan : [Changer l'image de la raquette](#)
@@ -349,11 +331,10 @@ Niv. 1
 ## Changer l'image de la raquette
 
 
-
 Niv. 1
 
-La raquette est un composant on va donc trouver la scène qui lui est
-dédié dans le dossier "composants/objets/raquette".
+La raquette est un composant, on va donc trouver la scène qui lui est
+dédiée dans le dossier "composants/objets/raquette".
 La scène est le fichier ".tscn" dans le dossier.
 
 - Prérequis
@@ -403,20 +384,11 @@ Niv. 1
 - Prérequis
 	- [Changer l'image de la raquette](#changer-l-image-de-la-raquette)
 
-La raquette est un composant on va donc trouver la scène qui lui est
-dédiée dans le dossier "composants/objets/raquette".
-La scène est le fichier ".tscn" dans le dossier.
-
-
 - Actions
-    - Double-cliquer sur le fichier "raquette.tscn" pour oublir la
+    - Double-cliquer sur le fichier "raquette.tscn" pour ouvrir la
         scène de la raquette.
 
 
-La scène de la raquette est composée de 3 nœuds :
-- Un nœud StaticBody2D,
-- Un nœud Sprite2D,
-- Un nœud CollisionShape2D.
 C'est le nœud Sprite2D, dénommé "image", qui va permettre de changer
 la couleur de la raquette.
 
@@ -427,7 +399,7 @@ la couleur de la raquette.
 
 Dans l'Inspecteur, dans la section "Visibility", on peut voir le
 champs "Self-Modulate". C'est le contenu de ce champ qu'il faut
-modifier pour changer l'image de la raquette dans le jeu.
+modifier pour changer la couleur de la raquette dans le jeu.
 
 
 - Actions
@@ -435,11 +407,11 @@ modifier pour changer l'image de la raquette dans le jeu.
         couleurs.
     - Choisir une couleur.
     - Cliquer en dehors de la fenêtre du nuancier pour la faire
-        disparaitre et valider la couleur choisie.
+        disparaître et valider la couleur choisie.
 
 
 Note : vous pouvez aussi changer la valeur du champ "Modulate" du
-noeud 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.
 
 - Suite
@@ -458,17 +430,22 @@ si ça arrive, la partie est perdue !
 
 - Actions
     - Ouvrir le script du lanceur.
-    - Décommenter le code qui permet de configurer le nombre de balles
-        via l'éditeur.
-    - Écrire une fonction "_decrementer_nombre_de_balles() ->
+    - Dé-commenter le code qui permet de configurer le nombre de balles
+        via l'éditeur :
+		- `@export_range(1, 10) var nombre_de_balles: int = 3`
+    - Compléter la fonction "_decrementer_nombre_de_balles() ->
         void".
         - Qui soustrait 1 au nombre de balles.
     - Modifier la fonction "lancer_balle".
         - Rajouter un test, s'il n'y a plus de balle, arrêter la
             fonction avec le mot-clef "return".
-        - Note : "return" interrompt une fonction.
-        - Astuce : afficher le nombre de balles après chaque
-            décrémentation avec une fonction "print()"
+
+> Attention ! Pour faire une comparaison d'égalité, il faut
+utiliser l'opérateur `==` ! L'opérateur `=` permet d'assigner
+une valeur à une variable.
+> Note : "return" interrompt une fonction.
+> Astuce : afficher le nombre de balles après chaque
+	décrémentation avec une fonction `print()`
 
 - Suite
 	- Afficher le compteur de balles
@@ -482,18 +459,36 @@ Niv. 2
 
 
 - Actions
-    - Décommenter la variable `nombre_de_balles` à 0 dans le script `lanceur.gd` attaché à la scène `lanceur.tscn`.
-    - Ajouter (si n'existe pas encore) signal `nb_balles_change` dans la scène du lanceur.
-        - Émettez le signal dans l'appel
-            `_decrementer_nombre_de_balles()`.
-    - Ajouter un label dans la scène de niveau.
+    - Dé-commenter la déclaration du signal `nb_balles_change` dans la scène du lanceur.
+        - Émettez le signal dans l'appel `_decrementer_nombre_de_balles()`.
+    - Ajouter la scène `Stock` dans un niveau, qui se trouve dans `composants/interface`
     - Brancher le signal du  lanceur du niveau vers le compteur/label.
         - Répéter le branchement pour chaque niveau.
 
+> Note : Le signal possède une méthode `emit`, qui permet 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.
+
 
-> Note : 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.
+### Explications : les signaux
+
+Mécanique idéale pour faire communiquer des nœuds entre eux. Les signaux
+permettent d'envoyer des messages à zéro, un ou plusieurs destinataires
+en même temps. À chaque émission de signal correspond l'exécution
+d'une fonction pour tous les nœuds connectés à ce signal. Les nœuds de
+la bibliothèque offrent des signaux et des fonctions déjà utilisables,
+et il est possible d'en créer dans nos scripts.
 
+Il est recommandé d'utiliser le plus possible les signaux, afin de minimiser
+les dépendances entre vos nœuds et scripts. Cela facilitera l'organisation
+de votre code. Vos collègues ou le futur vous-même vous remerciera !
 
+- Pas à pas :
+        <https://docs.godotengine.org/fr/4.x/getting_started/step_by_step/signals.html>
+    - Utiliser un signal dans un script :
+        <https://docs.godotengine.org/fr/4.x/tutorials/scripting/gdscript/gdscript_basics.html#signals>
+    - Référence :
+        <https://docs.godotengine.org/fr/4.x/classes/class_signal.html>
 
 ## Afficher un écran de game over
 
@@ -503,7 +498,7 @@ Niv. 1
 
 
 - Action
-    - Décommenter le signal "partie_perdu" dans la scène du
+    - Dé-commenter le signal "partie_perdu" dans la scène du
         lanceur.
     - L'émettre quand il n'y a plus de balle (fonction
         "lancer_balle()").
@@ -526,7 +521,7 @@ Niv. 3 : beaucoup d'étapes
     - S'inspirer de l'écran de game over pour créer l'écran de
         victoire.
     - Comprendre la logique de comptage des briques -> code à
-        décommenter dans conteneur_briques.gd
+        dé-commenter dans conteneur_briques.gd
     - Afficher le message dans chaque niveau
         - Ajouter votre nouvelle scène en tant que nœud enfant de
             Message
@@ -555,12 +550,12 @@ Niv. 2
             vitesse de la balle.
         - Pour appliquer la nouvelle vitesse, vous devez aussi appeler
             la fonction "_mettre_mouvement".
-    - Alternative 1 : accélerer à chaque touche de raquette.
+    - Alternative 1 : accélérer à chaque touche de raquette.
         - Dans "_physics_process" : Appeler "_accelerer" après
             chaque rebond sur une raquette.
         - Note : 50 px / sec / touche c'est bien pour avoir un bon
             challenge.
-    - Alternative 2 : accélerer à chaque rebond.
+    - Alternative 2 : accélérer à chaque rebond.
         - Dans "_physics_process" : Appeler "_accelerer" après
             chaque rebond.
         - Note : 10 px / sec / touche c'est bien pour avoir un bon
@@ -657,7 +652,7 @@ Niv. 1
 - Prérequis
     - Scène de partie perdu : "perdu.tscn".
 - Actions
-    - Ajouter un noeud AudioStreamPlayer dans la scène "perdu.tscn".
+    - Ajouter un nœud AudioStreamPlayer dans la scène "perdu.tscn".
     - Charger le son de partie perdu (game over) dans le champs
         "Stream" de l'AudioStreamPlayer.
     - Dans le champs Bus dans l'inspecteur, sélectionner : Bruits
@@ -677,7 +672,7 @@ Niv 1
     - La brique fait un bruit en explosant
     - La balle avec un signal rebondi
 - Actions
-    - Ajouter le noeud AudioStreamPlayer dans la scene balle.
+    - Ajouter le nœud AudioStreamPlayer dans la scene balle.
     - Charger le son "collision_sfx.wav" dans le champs "Stream"
         de l'AudioStreamPlayer dans l'inspecteur.
     - Brancher le signal  "rebondi" de la balle à la fonction play()
@@ -743,7 +738,7 @@ Niv. 3
             "brique.gd".
             - const EclatementScene: PackedScene =
                 preload("res://effets/eclatement_brique/eclatement_effet.tscn").
-        - Instancier la scene 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.
 
 - Suite
@@ -852,17 +847,17 @@ Niv. 3
 
 - Actions
     - Modifier "brique.gd" comme suit :
-        - Décommenter la constante "NOMBRE_DE_VIES_MAX".
-        - Décommenter la variable "nombre_de_vies".
+        - Dé-commenter la constante "NOMBRE_DE_VIES_MAX".
+        - Dé-commenter la variable "nombre_de_vies".
         - Modifier la fonction "frapper" pour réduire les points de
             vie, et ne mourir que s'il n'en reste plus.
-        - Décommenter "_montrer_nombre_de_vies" et la fonction
+        - Dé-commenter "_montrer_nombre_de_vies" et la fonction
             qui l'appelle.
     - Modifier les niveaux pour ajuster la vie.
         - Ouvrir le niveau carré simple.
             - Mettre 4 vies au bloc central.
                 - Astuce : vous pouvez sélectionner plusieurs briques
-                    en les selectionnant.
+                    en les sélectionnant.
                 - La propriété nombre de vies est visible dans
                     l'éditeur grâce au préfixe "@export".
 
@@ -893,7 +888,7 @@ dégradé vers le rouge à la place.
     - La brique a des vies
 - Actions
     - Chercher le dossier contenant les composants de la brique.
-    - Décommenter le code en rapport avec la vie de la brique dans le
+    - Dé-commenter le code en rapport avec la vie de la brique dans le
         script "brique.gd".
 
 
@@ -933,7 +928,7 @@ Niv. 4
     - Modifier l'arène pour que la zone du bas, appelée
         ZoneExterieure, détecte les collisions avec les briques
         (collision_layer: mask)
-    - Faire en sorte que l'arène envoit un signal quand une brique
+    - Faire en sorte que l'arène envoie un signal quand une brique
         est détectée par la zone extérieure
     - Relier ce signal au même signal que le game over classique
 
@@ -957,7 +952,7 @@ Niv. 3
     - Ajouter un frein sur la balle.
         - Ajouter la balle dans le "groupe_des_balles".
             - Voir : Avoir un nombre de vies limité.
-        - Décommenter la méthode "ralentir".
+        - Dé-commenter la méthode "ralentir".
     - Créer un nouveau pouvoir.
         - Copier le script "bonjour_pouvoir.gd" et le renommer en
             "pouvoir_ralentir.gd".
@@ -972,8 +967,8 @@ Niv. 3
             pouvoir :
             - les textures possibles sont dans le dossier
                 "composants/objets/brique/images/".
-            - L'association est faite dans la "methode
-                _associe_texture_brique" dans "brique.gd".
+            - L'association est faite dans la thode
+                "_associe_texture_brique" dans "brique.gd".
         - Associer votre nouveau pouvoir à une brique dans un niveau.
         - Écrire l'effet du pouvoir dans "declencher_pouvoir".
     - Écrire l'effet du pouvoir dans "declencher_pouvoir" :
@@ -988,7 +983,7 @@ Niv. 3
 - Note : préfixer un argument par "_" permet de dire à Godot que
     c'est normal que l'argument ne soit pas utilisé.
 - Documentation
-    - Un vecteur normalisé a une longeur de 1 :
+    - Un vecteur normalisé a une longueur de 1 :
         <https://docs.godotengine.org/fr/4.x/classes/class_vector2.html#class-vector2-method-normalized>
     - Référence arbre des nœuds :
         <https://docs.godotengine.org/fr/4.x/classes/class_scenetree.html>
@@ -1014,7 +1009,7 @@ Niv. 1
     - Possibilité 1 : signal
         - Ajouter un signal "capsule_recuperee"
         - Émettre le signal
-        - Ajouter noeud AudioStreamPlayer
+        - Ajouter nœud AudioStreamPlayer
         - Brancher le signal sur la fonction play() de
             l'AudioStreamPlayer
     - Alternative 2 : son spatialisé -> effet graphique de récupération
@@ -1155,7 +1150,7 @@ Niv. 3
             - Modifier la rotation de l'image (propriété rotation)
         - Appeler la fonction _diriger quand la balle se met en
             mouvement
-            - décommenter le code
+            - dé-commenter le code
         - Appeler la aussi quand elle rebondit
             - idem pour _rebondir que _mettre_en_mouvement
         - Tester
@@ -1188,7 +1183,7 @@ briques à distance.
 
 - Dépend de laser
 - Prérequis
-    - Image de la balle électique (animée dans un autre chapitre)
+    - Image de la balle électrique (animée dans un autre chapitre)
 - Actions
     - Copier la scène balle de feu.
     - Le pouvoir électrique va fonctionner de manière analogue au
@@ -1257,7 +1252,7 @@ Permet à la raquette de lancer un javelot à haute énergie qui détruit tout s
     - Faire un nouveau pouvoir
     - Déclenchement
         - Créée un nouveau javelot à l'endroit de la raquette
-- Débloque : fait un effet d'eruption à la surface de la raquette
+- Débloque : fait un effet d'éruption à la surface de la raquette
 - Docs
     - [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)
@@ -1422,11 +1417,11 @@ Niv. 4
 - Actions
     - Ajouter un pouvoir.
     - Mettre la raquette dans le groupe.
-    - Ajouter une methode publique "changer_taille" pour modifier
+    - Ajouter une méthode publique "changer_taille" pour modifier
         sa taille.
         - /! Il faut modifier la taille de l'image et la taille de
             l'enveloppe physique !
-    - Dans le déclenchement du pouvoir, appeler la methode
+    - Dans le déclenchement du pouvoir, appeler la méthode
         "changer_taille" sur toutes les raquettes.