Gestion des Evénements par rapport à l'heure

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

Gestion des Evénements par rapport à l'heure

Messagepar swiart2 le Sam Juin 09, 2018 9:29 pm

Bonsoir,

Je souhaite qu'un objet ne soit présent dans une pièce que par exemple entre 5h PM et 5h10 PM
Disons qu'il s'agit d'une pomme dans la cuisine.

Comment gérer cela ?

Merci

j'ai défini la gestion de l'heure comme suit :

Code: Tout sélectionner
When play begins: now the time of day is 2:30 AM.
 
To say the player's capitalised surroundings:
   let the masthead be "[the player's surroundings]" in upper case;
   say the masthead.

When play begins:
   now the left hand status line is "[the player's capitalised surroundings]" ;
   now the right hand status line is "[time of day]/[turn count]".

Every turn :
increase the time of day by 5 minutes.

The Cuisine is a room.

A pomme is a thing. [ JE N'AI VOLONTAIREMENT PAS DÉCLARÉ OU SE TROUVAIT LA POMME]
The description of the pomme is "une pomme rouge".


swiart2
Investigateur
 
Messages: 75
Inscription: Ven Juil 02, 2010 10:06 pm
Localisation: Rennes

Re: Gestion des Evénements par rapport à l'heure

Messagepar swiart2 le Sam Juin 09, 2018 10:26 pm

Pour compléter ma demande,j'ai pu gérer les ouvertures de salles à certaines heures mais je sèche sur la gestion des objets

Code: Tout sélectionner
salle1 is a room. The description of the salle1 is "salle1".
Salle2 is a room. The description of the Salle2 is "salle2".
Salle2 is west from salle1.



[SALLE OUVERTES A CERTAINES HEURES]
The salle1 has a time called the opening hour. The opening hour of the salle1 is usually 2:30 AM.
The salle1 has a time called the closing hour. The closing hour of the salle1 is usually 3:40 AM.

Check going to the salle1 :
   if the time of day is after the closing hour of the salle1,
      say "[The location] est fermée depuis [the closing hour of the salle1]." instead.
swiart2
Investigateur
 
Messages: 75
Inscription: Ven Juil 02, 2010 10:06 pm
Localisation: Rennes

Re: Gestion des Evénements par rapport à l'heure

Messagepar Mule hollandaise le Dim Juin 10, 2018 10:40 pm

Je n'y connais rien en inform 7, mais : si tu mets dans ton "every turn" un truc du genre "if the time of day is 5:00 PM: move the pomme to the salle1" puis "if the time of day is 5:10 PM: remove the pomme" ? C'est pas forcément ce qu'il y a de plus efficace mais ça devrait le faire (par contre le code ne s'écrit peut-être pas comme ça, je n'y connais rien x) )
Mule hollandaise
Grand Ancien
 
Messages: 1092
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Gestion des Evénements par rapport à l'heure

Messagepar filiaa le Lun Juin 11, 2018 4:53 pm

Il me semble que cette méthode ne marche que si on garde le comportement normal d'Inform, à savoir faire passer une minute par tour. Sinon, il y a un risque qu'entre deux tours, l'heure passe par exemple de 4h58 à 5h02, auquel cas, la condition "if the time of the day is 5:00 PM" ne sera jamais vérifiée... Il me semble qu'il y a un sujet du forum qui parlait du problème, mais je ne sais plus lequel...
filiaa
Investigateur
 
Messages: 74
Inscription: Dim Fév 23, 2014 10:07 pm

Re: Gestion des Evénements par rapport à l'heure

Messagepar Natrium le Lun Juin 11, 2018 7:10 pm

C'est vrai, mais ça ne devrait pas problème si les heures des événements sont des multiples de la vitesse à laquelle passe le temps. Sinon, il y a deux moyen de régler ce problème.

On peut lancer à la main les règles qui gèrent l'avancement du temps plusieurs fois par tour (par exemple 5 fois si on veut faire passer 5 minutes par tour). C'est montré dans l'exemple Nine AM Appointment.

On peut sinon vérifier l'heure au tour précédent, l'heure actuelle, et vérifier si l'événement est entre les deux (auquel cas on le lance). D'ailleurs, Inform fait ça par défaut avec la formulation suivante :

Code: Tout sélectionner
At 5:30 PM:
    blablabla;

L'exemple Uptempo montre comment faire avec ça. Par contre, je pense que ces événements ne se lancent qu'une seule fois. Mettons, si j'attends 24 heures, il ne se relancera pas une seconde fois. Mais je peux me tromper.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1071
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Gestion des Evénements par rapport à l'heure

Messagepar swiart2 le Lun Juin 11, 2018 11:09 pm

Bonsoir

Ma salle 1 est définie comme inaccessible à partir de 3H00

Après 3H la salle 1 devient effectivement inaccessible tel que cela est défini dans le code
A 4:10 , "un cri", tel que cela est défini dans le code.

MAIS !! il y a toujours un mai,
A 4:00, la règle de fermeture de la salle 1 disparaît automatiquement. Rendant alors à nouveau la salle 1 accessible !!
Je ne comprends pas pourquoi

Merci pour votre aide
steph

Code: Tout sélectionner
The fast time rule is listed before the timed events rule in the turn sequence rules.

The advance time rule is not listed in the turn sequence rules.
 
This is the fast time rule:
   increment the turn count;
   increase the time of day by 5 minutes.
 
salle1 is a room. The description of the salle1 is "salle1".
Salle2 is a room. The description of the Salle2 is "salle2".
Salle3 is a room. The description of the Salle3 is "salle3".
Salle2 is west from salle1.
Salle3 is west from salle2.


[SALLE OUVERTES A CERTAINES HEURES - La regle ne marche plus apres une 1 h
]
The salle1 has a time called the opening hour. The opening hour of the salle1 is usually 2:30 AM.
The salle1 has a time called the closing hour. The closing hour of the salle1 is usually 3:00 AM.

Check going to the salle1 when location is salle2 :
   if the time of day is after the closing hour of the salle1,
      say "La salle 1 est fermée depuis [the closing hour of the salle1]." instead.
 
 
 At 4:10 AM:
   say "un cri".
swiart2
Investigateur
 
Messages: 75
Inscription: Ven Juil 02, 2010 10:06 pm
Localisation: Rennes

Re: Gestion des Evénements par rapport à l'heure

Messagepar Natrium le Mar Juin 12, 2018 9:55 pm

Je pense que c'est parce qu'Inform fixe le début de la journée à 4 heures. Ce qui signifie que 3 h 59 est considéré comme étant après 4 h.

La justification est que beaucoup de FI se dérouleraient après minuit, mais que peu se commenceraient avant 4 h.

Dans ce cas, il faudra faire une comparaison manuelle (comparer l'heure et les minutes en fonction d'un point de référence choisi).
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1071
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Gestion des Evénements par rapport à l'heure

Messagepar StephaneF le Mar Juin 12, 2018 10:48 pm

Tu peux aussi remplacer entièrement le système temporel de base d'Inform par tes propres variables...
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 507
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Gestion des Evénements par rapport à l'heure

Messagepar Natrium le Lun Juin 18, 2018 7:31 pm

En revanche, s'il s'agit de remplacer le système par défaut par un système qui compte les minutes et les heures comme celui par défaut, alors ce n'est peut-être pas utile. Tout dépend de ce qu'on veut faire bien sûr, mais le système par défaut a quand même des avantages.

Par exemple, les heures reviennent à zéro après une journée, alors qu'il faudra le faire à la main avec un type personnalisé.

Et aussi, il ne sera pas possible d'utiliser

Code: Tout sélectionner
At 9:00 AM:
    blabla.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1071
Inscription: Mar Oct 04, 2011 11:18 pm


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron