Doc Donjon FI (v3)

Éditeur de fictions interactives avec interpréteur

Outils pour utilisateurs

Outils du site


reference:temps:programmer_routine

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
reference:temps:programmer_routine [2022/10/23 01:13] jonathanreference:temps:programmer_routine [2026/06/07 22:11] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Programmer une routine (après un certain temps) ======+====== Programmer une routine (après un délai) ======
  
-Il est possible de programmer l’exécution d’une routine après un certain temps.+Une [[reference:routines:simple|routine simple]] peut être déclenchée automatiquement après un délai en **temps réel** (pas en tours de jeu).
  
-Cela vous permet de déclencher un effet après une durée prédéfinie.+Cela permet de poser une bombe à retardement, déclencher l’apparition d’un PNJ après quelques secondes, faire « bip » toutes les minutes, etc.
  
-===== Programmer l’exécution d’une routine ===== +===== Syntaxe =====
- +
-Vous avez le choix entre un nombre d’heures, de minutes ou de secondes.+
  
 <code donjon> <code donjon>
 +exécuter la routine X dans N <unité>s.
 +</code>
 +
 +Les unités acceptées sont ''seconde'', ''minute'' et ''heure'' (au singulier ou au pluriel). Le moteur convertit la durée en millisecondes et active un chronomètre interne.
 +
 +===== Exemple minimal : bombe qui explose après 10 secondes =====
 +
 +<file donjon wiki_temps_boom_simple>
 +Le lieu de test est un lieu.
 +
 +routine boom:
 +  dire "La bombe a explosé !".
 +  terminer le jeu.
 +fin routine
 +
 règle après commencer le jeu: règle après commencer le jeu:
 +  dire "Attendez 10 secondes…".
   exécuter la routine boom dans 10 secondes.   exécuter la routine boom dans 10 secondes.
 fin règle fin règle
 +</file>
 +
 +[[djnc>wiki_temps_boom_simple|tester cet exemple]]
 +
 +===== Annuler l’exécution programmée =====
 +
 +<file donjon wiki_temps_annuler_routine>
 +Le lieu de test est un lieu.
 +La bombe est un objet vu ici.
  
 routine boom: routine boom:
-  dire "La bombe a explosé! Vous avez perdu.".+  dire "La bombe a explosé !"
 +  terminer le jeu.
 fin routine fin routine
-</code> 
  
-===== Annuler l’exécution programmée d’une routine =====+action désamorcer ceci: 
 +  si ceci est la bombe: 
 +    annuler la routine boom. 
 +    dire "Bravo ! La bombe a été désamorcée."
 +    terminer le jeu. 
 +  fin si 
 +fin action
  
-<code donjon> +règle après commencer le jeu
-règle après désamorcer la bombe+  exécuter la routine boom dans 30 secondes.
-  annuler la routine boom+
-  dire "Bravo! La bombe a été désamorcée.+
 fin règle fin règle
-</code> 
  
-===== Sauvegarde/Reprise partie =====+règle avant commencer le jeu: 
 +  dire "Essayez : {/désamorcer la bombe/} en moins de 30 secondes."
 +fin règle 
 +</file> 
 + 
 +[[djnc>wiki_temps_annuler_routine|tester cet exemple]] 
 + 
 +L’annulation retire la programmation de la file d’attente du moteur. Si la routine a déjà été exécutée, l’annulation est sans effet. 
 + 
 +===== Pause ===== 
 + 
 +Le joueur peut entrer la commande ''pause'' pour suspendre temporairement la partie. Tant que la partie est en pause, **les routines programmées ne se déclenchent pas** ; le décompte reprend là où il en était à la sortie de la pause. 
 + 
 +===== Sauvegarde et reprise ===== 
 + 
 +À la **sauvegarde** d’une partie en cours, Donjon FI enregistre : 
 + 
 +  * les routines qui se sont **déjà déclenchées** (leur effet sera rejoué à la reprise) ; 
 +  * **mais pas** les routines programmées **en attente** (le chrono en cours n’est pas reporté). 
 + 
 +Conséquence : si une routine a été programmée mais n’a pas encore eu le temps de se déclencher au moment de la sauvegarde, elle **sera perdue à la reprise**. Pour des scénarios qui exigent un comptage déterministe, préférez : 
 + 
 +  * la commande ''pause'' pour suspendre la partie sans la sauvegarder ; 
 +  * le [[reference:debogage:magneto|magnétoscope]] (fichiers ''.rec'') pour rejouer une partie pas-à-pas en figeant le temps. 
 + 
 +===== Exemple plus consistant : bombe à retardement ===== 
 + 
 +Un mini-jeu d’illustration : [[djnc>wiki_temps_bombe_a_retardement|bombe à retardement]] — 60 secondes pour désamorcer la bombe, ou taper ''pause'' pour suspendre le décompte. 
 + 
 +===== Voir aussi =====
  
-Actuellement les parties débutées, avec des routines encore programmées, ne peuvent pas être sauvegardées+  * [[reference:routines:simple|Routine simple]] — la routine programmée doit être une routine simple. 
-La fonctionnalité « mettre le jeu en pause » est prévue prochainement.+  * [[reference:temps:horloge|Horloge]] — lire l’heure système (pour des effets jour/nuit). 
 +  * [[reference:temps:calendrier|Calendrier]] — lire la date système. 
 +  * [[reference:debogage:magneto|Magnétoscope]] — rejeu déterministe d’une partie
 +  * [[reference:instructions:terminer|terminer le jeu]] — terminer la partie depuis une routine (échec/réussite).
  
reference/temps/programmer_routine.1666480431.txt.gz · Dernière modification : (modification externe)