> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://documentation.celestory.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Relier deux blocs : le fil, les triangles et les cercles

# 🔗 Relier deux blocs : le fil, les triangles et les cercles

Un **fil** est le trait courbe qui relie un point d'un bloc à un point d'un autre bloc : c'est lui, et lui seul, qui décide de ce qui se passe après quoi, et de ce que chaque bloc reçoit pour travailler. 🧵

Tout le reste de Celestory — les blocs, leurs réglages, les modules — n'existe que parce que des fils les relient. C'est donc la notion la plus centrale de l'outil, et c'est aussi celle qu'on n'a jamais prise le temps de définir.

🔺 **Une affaire de vocabulaire, réglée ici une bonne fois.** Selon les pages, vous lirez « fil de l'histoire », « flux de l'histoire », « fil d'exécution » ou « flux d'exécution » : ce sont **quatre noms pour la même chose**. L'interface française, elle, n'emploie aucun des quatre : elle dit **connexion** (« Séparer la connexion », « Supprimer la connexion »). Dans cet article, nous disons **fil** pour le trait, et **flux** pour ce qui y circule quand il s'agit de l'enchaînement de l'histoire.

---

${frame}[Vidéo : Relier deux blocs](https://celestory-docs-videos.netlify.app/fr/construction-graphe/relier-deux-blocs.html)

## 🍳 L'analogie : la brigade de cuisine

Imaginez une cuisine de restaurant. Deux choses très différentes y circulent, et confondre les deux est la source d'à peu près toutes les erreurs de débutant.

-   🎫 **Le ticket de commande** passe de main en main : le chef le donne au cuisinier, qui le donne au pâtissier. Un seul cuisinier le tient à la fois, et celui qui l'a, c'est celui qui travaille **maintenant**. C'est le **flux**.
-   🥕 **Les ingrédients** ne passent de main en main : ils sont posés là, et chaque cuisinier va chercher celui dont il a besoin, au moment où il en a besoin. Personne ne « donne la main » à une carotte. C'est la **valeur**.

Dans Celestory, ces deux circulations empruntent des fils qui se ressemblent, mais elles ne se branchent pas aux mêmes endroits — et l'outil dessine les prises différemment pour vous le dire. 🎯

---

## 🔺⚪ Comment lire les points d'un bloc

Chaque prise sur un bloc s'appelle un **point**. Sa **forme** vous dit ce qu'elle transporte, son **remplissage** vous dit si elle est servie.

| Forme | Type technique | Ce que ça fait |
|---|---|---|
| 🔺 Triangle | `Stream` (flux) | Passe la main. Le bloc s'exécute quand le flux lui arrive, puis le renvoie vers la suite. |
| ⚪ Cercle | `Value` (valeur) | Transporte une donnée : un nombre, un texte, une image, une liste… Ne déclenche rien. |
| ⚪ Cercle | `Variable` | Une valeur particulière : la variable **elle-même**, pas seulement son contenu — pour la modifier. |

-   **Forme pleine** = ce point est servi. Pour une sortie, cela veut dire qu'au moins un fil en part. Pour une entrée, cela veut dire qu'un fil y arrive **ou** qu'une valeur a été saisie à la main dans la fenêtre d'édition du bloc.
-   **Forme creuse** = ce point n'est ni relié ni rempli. Ce n'est pas forcément une erreur : beaucoup de points ont une valeur par défaut.

🔺 Il n'existe donc que **deux dessins pour trois types** : le cercle sert à la fois aux valeurs et aux variables. La différence ne se voit pas à l'œil, elle se découvre au moment où le lien refuse de se créer.

### 📍 Où sont ces points sur le bloc

Les deux points de flux principaux — ceux qui s'appellent `in` et `out` — ne sont pas rangés avec les autres : ils sont posés **dans le bandeau de couleur du bloc**, à gauche et à droite du titre, et ils n'affichent aucune étiquette. Tous les autres points, valeurs comme flux secondaires (les sorties **vrai** / **faux** d'un bloc Condition, par exemple), sont listés sous le bandeau, avec leur nom.

```plain text
       ENTRÉES  (à gauche)                    SORTIES  (à droite)

           ┌──────────────────────────────────────┐
  ────────▶│ ▶            Pause                 ▶ │────────▶      bandeau : le flux
           ├──────────────────────────────────────┤               (triangles, sans nom)
  ────────○│ ○  Durée                             │
           └──────────────────────────────────────┘               corps : les valeurs
                                                                  (cercles, avec leur nom)

           ┌──────────────────────────────────────┐
           │         Nombre aléatoire             │        aucun triangle : ce bloc
           ├──────────────────────────────────────┤        ne prend jamais la main,
  ────────○│ ○  de                                │        il ne fait que fournir
  ────────○│ ○  à                      résultat ○ │────────○
  ────────○│ ○  décimal                           │
           └──────────────────────────────────────┘

  ▶ = triangle → flux          ○ = cercle → valeur
  forme pleine = reliée ou remplie          forme creuse = vide
```

Un bloc sans aucun triangle, comme **Nombre aléatoire**, ne prend jamais place dans la séquence : c'est un **bloc de valeur**, on le branche sur l'entrée de quelqu'un d'autre. Un bloc avec triangles, comme **Pause**, est un **bloc de flux** : il s'intercale entre deux autres. 🧩

---

## 🛠️ À faire tout de suite : trois blocs, deux fils

Dans un module neuf, vous avez déjà un bloc **Départ** : c'est la porte d'entrée de votre histoire, il existe une seule fois par graphe et il n'a qu'une seule sortie, un triangle.

1.  **Zoomez.** Vous devez voir les points individuellement, sinon rien de ce qui suit ne marchera (voir l'encart plus bas). 🔍
2.  **Ajoutez un bloc Pause** (clic droit sur une zone vide du canevas pour ouvrir le menu d'ajout).
3.  **Tirez le premier fil :** cliquez sur le triangle de sortie de **Départ**, maintenez, et relâchez sur le triangle d'entrée de **Pause**. Pendant le glisser, le fil est gris ; il prend la couleur du bloc visé dès que le curseur approche d'un point compatible. C'est votre seul indicateur. 🎨
4.  **Ajoutez un bloc Nombre aléatoire.** Remarquez : il n'a aucun triangle. Impossible de le mettre « avant » ou « après » quoi que ce soit.
5.  **Tirez le second fil :** de son cercle de sortie **résultat** vers le cercle d'entrée **Durée** du bloc Pause.

Vous venez de faire les deux gestes qui composent 100 % d'un graphe Celestory : **passer la main** (Départ ▶ Pause) et **fournir une donnée** (Nombre aléatoire ⚪ Durée). Votre histoire marquera maintenant une pause d'une durée tirée au sort. 🎲

🔺 Si vous ne reliez rien sur **Durée** et que vous ne saisissez rien dans la fenêtre du bloc, la pause dure **0 seconde** : le point garde sa valeur par défaut, sans le moindre avertissement. L'ingrédient manquant n'interrompt pas le service.

---

## 🚫 Quand le lien refuse de se créer

Celestory vérifie la compatibilité en temps réel et **ne crée jamais un lien incohérent**. Le problème n'est pas là : le problème, c'est qu'il ne vous dit pas pourquoi. ⚠️

⚠️ **Le piège central.** Quand vous relâchez un fil sur un point incompatible, il ne se passe **aucune erreur, aucun message, aucune alerte rouge**. À la place, un petit menu **« Connecter à… »** s'ouvre sous votre curseur — exactement le même que si vous aviez lâché le fil dans le vide. Beaucoup d'utilisateurs le referment en pensant avoir raté leur geste, sans jamais comprendre que leur lien a été refusé.

Les quatre raisons de refus, dans l'ordre de fréquence :

1.  **Un triangle avec un cercle.** La règle est absolue : un point de flux ne se relie **qu'**à un point de flux. Aucune exception, aucune conversion automatique.
2.  **Deux types de données incompatibles.** Un texte dans une entrée qui attend une image, par exemple. Dans le doute, ouvrez la fenêtre d'édition du bloc : le champ associé au point vous dit ce qu'il attend.
3.  **Un point verrouillé.** Certaines entrées se remplissent **uniquement** à la main et n'acceptent jamais de fil : les **choix** d'un bloc Choix, l'**expression** d'un bloc Expression, le **format** d'un bloc Formater texte, le **graphe** d'un bloc Ouvrir un graphe… Elles sont pourtant dessinées comme des cercles ordinaires. C'est le seul cas où Celestory finit par parler : le menu affiche alors « Aucun bloc ne peut être connecté à celui-ci ».
4.  **Deux sorties vers la même entrée de valeur.** Une entrée de valeur n'accepte qu'un seul fil (voir la section suivante).

### ✅ La bonne manœuvre : lâcher dans le vide

Plutôt que de viser un point et d'échouer, **tirez le fil depuis votre point de départ et relâchez-le sur une zone vide du canevas**. Le menu « Connecter à… » s'ouvre, et il ne liste que des blocs et des variables **réellement compatibles avec ce point précis**, classés en « Blocs les plus utilisés » et « Autres blocs ». Choisissez-en un : le bloc est créé à l'endroit du relâchement, **déjà relié**. 🪄

C'est la façon la plus sûre de travailler quand on débute : on ne peut littéralement pas se tromper de type, puisque la liste est filtrée pour vous. Un champ de recherche permet de filtrer davantage, et la touche `Entrée` valide la première proposition.

---

## ⚖️ Combien de fils par point ?

Les règles ne sont pas les mêmes des deux côtés, et elles s'appliquent en silence.

| Point | Nombre de fils | Ce qui se passe si vous en rebranchez un autre |
|---|---|---|
| 🔺 Sortie de flux | **Un seul** | L'ancien fil est supprimé sans confirmation. |
| 🔺 Entrée de flux | Autant que vous voulez | Plusieurs chemins peuvent mener au même bloc. C'est normal et souhaitable. |
| ⚪ Sortie de valeur | Autant que vous voulez | La même donnée peut alimenter dix blocs. |
| ⚪ Entrée de valeur | **Un seul** | L'ancien fil est supprimé sans confirmation. |

⚠️ Ces deux suppressions silencieuses sont une cause classique de branche d'histoire « disparue » : en rebranchant la sortie d'un bloc ailleurs, vous avez détruit le chemin précédent. Rien ne s'affiche. `Cmd+Z` (`Ctrl+Z`) restaure l'ensemble.

⚠️ **Un fil écrase une valeur saisie.** Si vous aviez tapé une durée à la main dans la fenêtre du bloc Pause, brancher un fil sur **Durée** **efface définitivement** cette saisie. Le fil gagne toujours contre la valeur écrite.

---

## ✂️ Supprimer, couper, insérer

-   **Supprimer un fil** : cliquez dessus pour le sélectionner (il devient bleu, ainsi que ses deux blocs), puis `Suppr` ou `Retour arrière`. Le clic droit sur le fil propose la même chose : **Supprimer la connexion**.
-   **Débrancher depuis la fenêtre du bloc** : double-cliquez sur le bloc ; en face de chaque point relié, une petite croix permet de retirer ce fil précis — utile quand les fils se chevauchent à l'écran et qu'on n'arrive pas à cliquer sur le bon.
-   **Insérer un bloc au milieu d'un fil** : clic droit sur le fil, puis **Séparer la connexion**.

⚠️ **Le piège du double-clic.** Le double-clic ne fait pas la même chose selon ce qui est sous le curseur : sur un **bloc**, il ouvre sa fenêtre d'édition ; sur un **fil**, il insère un bloc **Connecteur** (un simple relais blanc) à l'endroit cliqué et repique les deux moitiés dessus. Quand un fil passe au-dessus d'un bloc, c'est le bloc qui gagne. Un Connecteur apparu « tout seul » au milieu de votre graphe vient presque toujours de là.

🔺 Le Connecteur n'a que deux triangles : il n'existe que pour le **flux**, où il sert à faire contourner proprement une zone encombrée. Ne l'utilisez pas sur des fils de valeur.

---

## 🔍 Deux conditions matérielles

⚠️ **En dessous de 50 % de zoom, les fils ne se tracent plus.** À ce niveau, Celestory dessine les blocs comme de simples rectangles colorés, sans points visibles : cliquer-glisser sur un bloc le **déplace** au lieu de tirer un fil. Si votre geste ne produit rien d'autre qu'un bloc qui bouge, ce n'est pas vous, c'est le zoom. Zoomez et recommencez.

🔺 Les points sont très petits, et Celestory attrape **le point le plus proche** du curseur. Sur un bloc chargé, prenez l'habitude de zoomer franchement avant de câbler, plutôt que de viser au pixel.

---

## 🧠 Ce qu'il faut retenir

-   Un **fil** relie deux points. Selon les pages, on l'appelle aussi flux de l'histoire, fil d'exécution ou connexion : c'est la même chose.
-   🔺 **Triangle = flux** : ça passe la main. ⚪ **Cercle = valeur** : ça transporte une donnée.
-   Un triangle ne se relie **jamais** à un cercle.
-   **Plein = servi, creux = vide.**
-   En cas de refus, **rien ne s'affiche** : lâchez le fil dans le vide et laissez le menu « Connecter à… » vous proposer ce qui est compatible.

---

→ Prochaine étape : maintenant que vous savez faire passer la main d'un bloc à l'autre, apprenez à la faire passer **à plusieurs endroits différents** avec **Votre premier choix : le lecteur décide, l'histoire bifurque**. 🌿