Doc Donjon FI (v3)

Éditeur de fictions interactives avec interpréteur

Outils pour utilisateurs

Outils du site


reference:temps:programmer_routine

Programmer une routine (après un délai)

Une routine simple peut être déclenchée automatiquement après un délai en temps réel (pas en tours de jeu).

Cela permet de poser une bombe à retardement, déclencher l’apparition d’un PNJ après quelques secondes, faire « bip » toutes les minutes, etc.

Syntaxe

exécuter la routine X dans N <unité>s.

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

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:
  dire "Attendez 10 secondes…".
  exécuter la routine boom dans 10 secondes.
fin règle

tester cet exemple

Annuler l’exécution programmée

wiki_temps_annuler_routine
Le lieu de test est un lieu.
La bombe est un objet vu ici.
 
routine boom:
  dire "La bombe a explosé !".
  terminer le jeu.
fin 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
 
règle après commencer le jeu:
  exécuter la routine boom dans 30 secondes.
fin règle
 
règle avant commencer le jeu:
  dire "Essayez : {/désamorcer la bombe/} en moins de 30 secondes.".
fin règle

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 magnétoscope (fichiers .rec) pour rejouer une partie pas-à-pas en figeant le temps.

Exemple plus consistant : bombe à retardement

Un mini-jeu d’illustration : bombe à retardement — 60 secondes pour désamorcer la bombe, ou taper pause pour suspendre le décompte.

Voir aussi

  • Routine simple — la routine programmée doit être une routine simple.
  • Horloge — lire l’heure système (pour des effets jour/nuit).
  • Calendrier — lire la date système.
  • Magnétoscope — rejeu déterministe d’une partie.
  • terminer le jeu — terminer la partie depuis une routine (échec/réussite).
reference/temps/programmer_routine.txt · Dernière modification : de 127.0.0.1