reference:routines:simple
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| reference:routines:simple [2022/07/30 17:40] – jonathan | reference:routines:simple [2026/06/16 21:50] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Routine simple ====== | ====== Routine simple ====== | ||
| - | Une routine simple | + | Une **routine simple** est un bloc d’instructions qu’on peut **réutiliser** depuis n’importe quelle |
| - | ===== Exemple | + | ===== Définir et appeler une routine |
| + | |||
| + | ==== Définition | ||
| <code donjon> | <code donjon> | ||
| - | routine | + | routine |
| - | dire "Votre sac [si le sac contient un objet]contient : [lister objets sac][sinon]est vide.[fin si]"; | + | dire "« Merci et à bientôt ! »". |
| - | fin routineauie | + | fin routine |
| </ | </ | ||
| + | |||
| + | ==== Appel ==== | ||
| + | |||
| + | Les deux formes ci-dessous sont équivalentes : | ||
| + | |||
| + | <code donjon> | ||
| + | exécuter routine remercier. | ||
| + | exécuter la routine remercier. | ||
| + | </ | ||
| + | |||
| + | ==== Exemple minimal complet ==== | ||
| + | |||
| + | <file donjon wiki_routines_routine_simple_min> | ||
| + | Le lieu de test est un lieu. | ||
| + | |||
| + | routine remercier: | ||
| + | dire "« Merci ! »". | ||
| + | fin routine | ||
| + | |||
| + | action saluer: | ||
| + | exécuter la routine remercier. | ||
| + | fin action | ||
| + | |||
| + | règle avant commencer le jeu: | ||
| + | dire " | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | [[djnc> | ||
| + | |||
| + | ===== Paramètres typés ('' | ||
| + | |||
| + | Une routine simple peut accepter jusqu’à deux paramètres typés '' | ||
| + | |||
| + | ==== Types disponibles ==== | ||
| + | |||
| + | ^ Type ^ Sémantique | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''< | ||
| + | | '' | ||
| + | |||
| + | L’article admis est '' | ||
| + | |||
| + | ==== Définition et appel ==== | ||
| + | |||
| + | <file donjon wiki_routines_routine_param_min> | ||
| + | Le salon est un lieu. | ||
| + | La potion est un objet dans le salon. | ||
| + | Le score est un compteur initialisé à 0. | ||
| + | |||
| + | routine LancerObjet: | ||
| + | définitions: | ||
| + | ceci est un objet. | ||
| + | cela est un nombre. | ||
| + | exécution: | ||
| + | dire "Vous lancez [intitulé ceci] avec [c cela] points de force." | ||
| + | fin routine | ||
| + | |||
| + | routine ajusterScore: | ||
| + | définitions: | ||
| + | ceci est un compteur. | ||
| + | exécution: | ||
| + | changer ceci augmente de 10. | ||
| + | dire "Bonus ! Score : [c ceci]." | ||
| + | fin routine | ||
| + | |||
| + | routine notifier: | ||
| + | définitions: | ||
| + | ceci est un texte. | ||
| + | exécution: | ||
| + | dire "Note : [ceci]" | ||
| + | fin routine | ||
| + | |||
| + | règle après commencer le jeu: | ||
| + | exécuter routine LancerObjet avec la potion et 5. | ||
| + | exécuter routine ajusterScore avec le score. | ||
| + | exécuter routine notifier avec " | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | [[djnc> | ||
| + | |||
| + | ==== Sans bloc '' | ||
| + | |||
| + | Sans bloc '' | ||
| + | |||
| + | ==== Balises d’interpolation utiles ==== | ||
| + | |||
| + | Dans le corps d’une routine paramétrée : | ||
| + | |||
| + | * paramètre de **classe** ('' | ||
| + | * paramètre '' | ||
| + | * paramètre '' | ||
| + | |||
| + | ===== Surcharge de routines ===== | ||
| + | |||
| + | Plusieurs routines peuvent partager le même nom si leur signature diffère (arité ou types des paramètres). Le moteur choisit automatiquement la variante la **plus spécifique** à l’appel. | ||
| + | |||
| + | <file donjon wiki_routines_routine_surcharge> | ||
| + | Le salon est un lieu. | ||
| + | La pomme est un objet dans le salon. | ||
| + | Le chien est un vivant dans le salon. | ||
| + | |||
| + | routine logger: | ||
| + | dire " | ||
| + | fin routine | ||
| + | |||
| + | routine logger: | ||
| + | définitions: | ||
| + | ceci est un objet. | ||
| + | exécution: | ||
| + | dire "OBJ : [intitulé ceci]." | ||
| + | fin routine | ||
| + | |||
| + | routine logger: | ||
| + | définitions: | ||
| + | ceci est un vivant. | ||
| + | exécution: | ||
| + | dire "VIV : [intitulé ceci]." | ||
| + | fin routine | ||
| + | |||
| + | règle après commencer le jeu: | ||
| + | exécuter routine logger. | ||
| + | exécuter routine logger avec la pomme. | ||
| + | exécuter routine logger avec le chien. | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | [[djnc> | ||
| + | |||
| + | **Règles de spécificité** : | ||
| + | |||
| + | * Un paramètre de type **classe** bat toujours un paramètre '' | ||
| + | * Entre deux paramètres de classe, la classe la plus profonde gagne ('' | ||
| + | * Si plusieurs variantes ont la même spécificité maximale, le moteur renvoie une erreur (ambiguïté) ; il faut alors préciser un type plus spécifique. | ||
| + | |||
| + | ===== Appels différés avec arguments ===== | ||
| + | |||
| + | Les appels différés ('' | ||
| + | |||
| + | → Voir [[reference: | ||
| + | |||
| + | ===== Cas typique : factoriser un affichage ===== | ||
| + | |||
| + | Une routine appelée depuis plusieurs actions affichant le même message : | ||
| + | |||
| + | <file donjon wiki_routines_sac_inventaire> | ||
| + | Le lieu de test est un lieu. | ||
| + | Le sac est un contenant dans l' | ||
| + | La pomme est un objet vu ici. | ||
| + | La clé est un objet vu ici. | ||
| + | |||
| + | routine afficherContenuSac: | ||
| + | dire "Votre sac [si le sac contient un objet]contient : [lister objets sac][sinon]est vide.[fin si]". | ||
| + | fin routine | ||
| + | |||
| + | action ouvrir le sac: | ||
| + | exécuter la routine afficherContenuSac. | ||
| + | fin action | ||
| + | |||
| + | action fouiller le sac: | ||
| + | exécuter la routine afficherContenuSac. | ||
| + | fin action | ||
| + | |||
| + | règle avant commencer le jeu: | ||
| + | dire " | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | [[djnc> | ||
| + | |||
| + | ===== Programmer l’exécution d’une routine ===== | ||
| + | |||
| + | Une routine simple peut être déclenchée après un délai en temps réel : | ||
| + | |||
| + | <code donjon> | ||
| + | règle après commencer le jeu: | ||
| + | exécuter la routine alarme dans 30 secondes. | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | → Voir [[reference: | ||
| + | |||
| + | ===== Exemple plus consistant : magasin ===== | ||
| + | |||
| + | Une routine '' | ||
| + | |||
| + | <file donjon wiki_routines_magasin_remercier> | ||
| + | Le magasin est un lieu. | ||
| + | L' | ||
| + | |||
| + | routine remercier: | ||
| + | dire "« Merci et à bientôt ! »". | ||
| + | fin routine | ||
| + | |||
| + | action acheter: | ||
| + | dire "Vous achetez l' | ||
| + | exécuter la routine remercier. | ||
| + | fin action | ||
| + | |||
| + | action vendre: | ||
| + | dire "Vous vendez l' | ||
| + | exécuter la routine remercier. | ||
| + | fin action | ||
| + | |||
| + | règle avant commencer le jeu: | ||
| + | dire " | ||
| + | fin règle | ||
| + | </ | ||
| + | |||
| + | [[djnc> | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | |||
| + | * [[reference: | ||
| + | * [[reference: | ||
| + | * [[reference: | ||
| + | * [[reference: | ||
| + | |||
| + | {{tag> | ||
| + | |||
reference/routines/simple.1659195628.txt.gz · Dernière modification : (modification externe)
