Temporiser des actions - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Temporiser des actions (/showthread.php?tid=3020) |
Temporiser des actions - Thedeejay - 06-09-2008 Salut! je suis en train de creer un jeu d'ellevage (il faut élever un smiley) je souhaiterais attendre pour qu'il est faim (ex 1 fois tous les 2 jours) je ne peut pas faire avec des cookies (enfin si mais c'est relou si il change d'ordi...) comment faire pour 'attendre' en php? j'ai mysql a disposition... Merci RE: 'temporiser' des actions - Kassak - 06-09-2008 Un simple champ en BDD suffit, quand tu nourris son smiley, tu enregistres le timestamp en BDD, et donc ensuite tu el compares au timestamp actuel pour savoir s'il faut encore le nourrir RE: 'temporiser' des actions - Sephi-Chan - 06-09-2008 Bonjour, Une solution simple consiste à utiliser un champ prochain_repas (de type DATETIME) dans la table qui contient tes smileys. Il faut également que tes nourritures aient un attribut qui indique combien d'heure la nourriture fait effet (un champ duree, par exemple). Ainsi, quand un joueur nourrit son smiley, tu peux mettre à jour le champ prochain_repas du smiley en lui indiquant l'heure actuelle plus N heures, N étant la valeur du champ duree de la nourriture donnée. Comme cela : Code : UPDATE smileys Le second %d est l'identifiant du smiley nourri. Ensuite, sur ta page, tu peux indiquer si le smiley a faim ou non. Voici la requête qui indique les informations sur le smiley. Code : SELECT *, IF( CURRENT_TIMESTAMP( ) < prochain_repas, 1, 0 ) AS deja_nourri Le %d est cette fois à remplacer par l'identifiant du monstre dont tu veux les informations. Sephi-Chan RE: Temporiser des actions - Thedeejay - 06-09-2008 merci! RE: 'temporiser' des actions - Cartman34 - 08-09-2008 Sephi-Chan a écrit :Bonjour,Il est davantage conseillé (au moins pas moi même) d'enregistrer la date du dernier repas comme l'a proposé Kassak plutot que celle du prochain comme l'a proposé Sephi-Chan. RE: Temporiser des actions - Sephi-Chan - 08-09-2008 Il faudrait expliquer pourquoi, sans cela c'est inutile. Je ne me vexerai pas si tu proposes une alternative. Sephi-Chan RE: Temporiser des actions - Argorate - 08-09-2008 personnellement je garde egalement la date du dernier tour passer, apres cela revient sans doute au meme puisqu'il y a des calculs derriere... RE: Temporiser des actions - Cartman34 - 09-09-2008 Sephi-Chan -> En effet, quelques explications sont toujours mieux et je suppose qu'un "J'ai vu ça dans les cours" ne te suffirait pas. j'ai remarqué cela avec l'expérience, voici quelques raisons: - Posséder la dernière activité: on peut connaître facilement et sans calcul quand le smiley a été nourri pour la dernière fois. - Permettre des variantes dans la durée entre 2 "actualisations". - Faciliter la gestion par les Administrateur du jeu. En gros, en enregistrant la prochaine "actualisation", nous sommes restreint par son arrivée qui ne peut qu'être future. Autrement, qu'on fasse le calcul avant ou après...ca ne change que le code. En testant comme tu as dis (c'était il y a bien longtemps...), je me suis retrouvé avec des problèmes car je voulais indiquer quand avait eu lieu la dernière mise à jour mais le temps pouvait être variable, je ne savais plus comment retrouver c'était quoi sans faire un 2eme champs dans la bdd. Bref, ça devient vite un calvaire. Pour conclure, il a toujours été recommandé d'enregistrer la dernière date et j'ai toujours vu ça dans les jeux (même les jeux très connus je veux dire...). RE: Temporiser des actions - Sephi-Chan - 09-09-2008 Merci pour l'explication. À vrai dire, mon choix d'indiquer la date du prochain repas était totalement arbitraire, c'était du pile ou face. Je voulais juste proposer une solution pour implémenter la temporisation. Sephi-Chan |