[résolu] Pour simuler le défilement d'une journée virtuelle

Bonjour tout le monde !
Je fais un jeu de simulation de vie, et je ne sais pas comment je pourrais faire pour créer un défilement des heures (minute par minute) dans une journée virtuelle … Les journées ne dureront pas 24h vraie heures bien entendu… Et voilà, je ne sais pas comment écrire cela dans les événements, et pour l’afficher dans l’interface (mais ça encore c’est pas le gros du problème lol). quelqu’un pourrait m’éclairer s’il vous plait ? :slight_smile:

Hello,

il y a plusieurs options… Mais une basique pourrait consister à utiliser un un chronomètre qui irait par exemple jusqu’à 20 secondes, puis remis à zero (en gros 20sec irl serait égal ici à 1 min dans ton jeu, donc valeur ajustable). A chaque fois que les 20 secondes sont passées, tu fais +1 a une variable de scene (ou globale) nommée “minute”, qui s’incrémentera alors alors d’une minute toutes les 20 secondes.
Puis quand la variable “minute” arrive à 60, remise à zero et +1 à une autre variable “heure”, et ainsi de suite quand heure arrive à 24, remise à zero et +1 à une variable “jour”.

A juster… Pour l’affichage, après, simple, tu récupères les valeurs de variables dans une zone texte pour les afficher (l’éditeur d’expression te permet de récupérer des valeurs de variables) et tu les concatènes : “jour” + ToString(jour) + " " + ToString(heure) + “:” + To String(minute). Je suis plus sur de la syntaxe, mais fais des tests et zieutes le wiki, l’éditeur d’expression fera tout le boulot, je ne développe plus des masses ces derniers temps… par manque de temps !

Merci !! je teste ça demain !! :slight_smile:

Bonjour ! Encore merci ça marche super :slight_smile:
J’ai par contre un tout petit soucis pour l’affichage j’aimerais que cela s’affiche comme ça : 01:01 (1heure1minute) mais pour moi ça s’affiche comme ça 1 : 1 … y’a pas le zéro devant qui fait la différence esthétiquement lol comment je pourrais faire ? moi j’ai mis 3 textes différents un qui affiche les heures, un qui affiche le : et un qui affiche les minutes

Hello,

Il va falloir feinter, car en effet Gdevelop va prendre les variables incrémentées en format “numérique”. En gros tu peux faire qqch du genre :
si la variable heures est inférieure à 10, alors afficher dans la zone texte :
“0” + VariableString(heures) + “:” + “0” + VariableString(minutes)
Il va falloir faire plusieurs conditions/exceptions…

Une piste voir pour comprendre comment ça marche : il existe 2 “types” de variables manipulable dans GD :

  • nombre: “modifier la valeur de variable” => manipuler des chiffres (et stocker “01” ne sera possible)
  • texte: “Modifier la valeur texte de la variable” => ici tu peux stocker du texte, donc potentiellement une concaténation “mon texte” + une variable numérique convertie en texte (VariableString ou ToString(maVariable).

merci ça marche très bien ! Et comme je fais un jeu de simulation type sims, à chaque action (dormir manger etc…) je voulais faire défiler le temps plus vite ou bien ajouter du temps directement en plus genre 8 heures de sommeil quand je vais au lit je fais +8h à la variables heures… mais ça marche pas, pour les minutes ça me mets par exemple 10h73 mdr… et pour les heures ça change de jour et ça bug … pourtant j’ai écris que dès que les minutes atteignent 60 ça revient a zero et ça ajoute 1 heure etc… o.o Si vous pouvez pas m’aider c’est pas grave vous avez déjà fait beaucoup !! :smiley: Je demande juste au cas ou quelqu’un passe par là et aurait une idée :slight_smile: Je me demande comment on passe le sujet en résolu … (?)

Il faudrait voir comment est fait l’algo pour les heures, mais +8h ça peut etre fait en 2 temps… compléter les heures jusqu’à minuit, soit 00, et ajouter ensuite la différence… Ou si “heure” >=24 faire -24 à la variable pour repartir de 0 (et +1jour)… C’est une idée, ça peut être adapté aux minutes aussi…
Sinon pour le défilement du temps en accéléré : il a des actions sur le controle de l’échelle du temps… Ca peut-etre une option pour faire passer le temps plus vite (échelle x 1.5 ou x2).

Pour passer le sujet en [résolu], il faut modifier le premier post de la discussion.

D’accords merci ! :slight_smile: