Partage
  • Partager sur Facebook
  • Partager sur Twitter

Recréé fonction de temp

de façon personalisé

Sujet résolu
    21 juillet 2006 à 1:28:23

    Bonjour, je voudrai recréé la fonctin date('format', timestamp).
    Mais je ne sais pas comment elle fonctionne.

    Pourquoi la recréé?
    Pour pouvoir changer le nombre de seconde des informations...
    Car je crée un jeu, et il a son propre temps. A savoir que 1 jour dans le jeu = 4h sur terre. Et inverssément, 1jour sur terre = 4jour dans le jeu.
    Pour simplifier, 1 semaine(jeu) = 8jour(jeu), 1mois(jeu) = 40jour(jeu), 1an(jeu) = 360jour(jeu)

    Voilà, j'esper que ce n'est pas trop compliquer.


    Pour le moment j'ai déjà défini quelques variables:
    <?
    $sec_terre = 1;
    $min_terre = $sec_terre * 60;
    $h_terre = $min_terre * 60;
    $jour_terre = $h_terre * 24;

    $jour_mendrock = $jour_terre / 4; // 1 jour mendrock = 6h terre
    $h_mendrock = $h_terre / 4; // 1h mendrock = 25min terre
    $min_mendrock = $h_mendrock / 60; // 1h => 60min
    $semaine_mendrock = $jour_mendrock * 8; // 1semaine => 8jours
    $mois_mendrock = $semaine_mendrock * 5; // 1mois => 5semaines => 40 jours
    $an_mendrock = $mois_mendrock * 9; // 1an => 9mois => 360 jours
    $etat_mendrock = $jour_mendrock / 6; // pour afficher etat de la journer (6 different: nuit, aube, matin, midi, après-midi, soir => chacun 4h mendrock

    $360degre = 100;
    $1mindegré = 100 / 60;

    $temps_depart_mendrock = 1133049070; // timestamp création forum de mendrock   <br />
    //Sinon utiliser la ligne suivante pour trouver une date
    //$timestamp = mktime(heure, minutes, secondes, mois, jour, an);

    $temps_passe = time() - $temps_depart_mendrock;
    ?>



    Merci pour vos conseil.
    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2006 à 1:54:55

      Citation : ibasticour


      1 jour dans le jeu = 4h sur terre. Et inverssément, 1jour sur terre = 4jour dans le jeu.


      ???
      1 jour dans le jeu = 4h sur terre OK
      1 jour sur terre(24h) = 4 jour dans le jeu :euh:

      4x4h = 16 ... pas 24!
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2006 à 2:04:54

        Si un jour dure en réalité 4h, alors il se déroule 14400 secondes par jour imaginaire. Or on sait qu'il se déroule en réalité 86400 secondes par jour réel. Tu n'as pas forcément utilité à te prendre la tete avec tous les éléments de la date à moins de vouloir vraiment changer la syntaxe aussi.

        Mais si tu veux modifier seulement la vitesse du temps, la seule chose à modifier, c'est le timestamp.

        function game_date($syntax, $time = time())
        {
                // on converti le temps réel écoulé en temps du jeu écoulé
                $time = $time * 86400 / 14400;

                // on retourne la date imaginaire
                return date($syntax, $time);
        }


        A noter que la date de départ est le 1er janvier 1970, mais c'est aussi le cas pour la date imaginaire. En gros avec cette fonction, c'est comme si le temps s'écoulait plus vite.
        • Partager sur Facebook
        • Partager sur Twitter
          21 juillet 2006 à 19:55:55

          Effectivement je me suis trompé, 6jour sur mendrock = 1 jour sur terre, donc 1jour mendrock = 4h.

          Le départu du timestamp est différent, et la syntaxe aussi.
          Je pense que je vais oublier mes histoires de semaines et de mois car ça complique beaucoup trop et garder l'idée de docteur night pour changer la vitesse du temps.

          Par contre je ne comprend pas comment fonctionne la fonction.
          Les seuls choses que j'ai compris:

          86400 = 1jour terre
          14400 = 1jr mendrock (4h terre)
          86400 / 14400 = 6 (4h = 1/6h de 24h)




          function game_date($syntax, $time = time())
          {
                  // on converti le temps réel écoulé en temps du jeu écoulé
                  $time = $time * 86400 / 14400;

                  // on retourne la date imaginaire
                  return date($syntax, $time);
          }

          • Partager sur Facebook
          • Partager sur Twitter
            21 juillet 2006 à 20:09:58

            ça dit que à chaque seconde passée sur terre, il y en a 6 dans le jeu (logique, ça va 6x plus rapidement).

            Le seul problème, c'est que la limitation des int est de 2^31, ça cause un léger bug au niveau des années, tu dois t'en occuper
            • Partager sur Facebook
            • Partager sur Twitter
              21 juillet 2006 à 20:21:35

              Le lien est mort :euh:

              Et si il y a un bug si le timestamp est au deçu de 2^31 soit 2 147 483 648, je suis un peux embeter care 1133049070 (date de création du forum de mendrock) *6 = 6 798 294 420 qui est légerement plus grand...
              • Partager sur Facebook
              • Partager sur Twitter
                21 juillet 2006 à 20:29:10

                En effet mon lien était mort, il manquait un "s", je les ai corrigé.

                Et pour l'année si ça marque 1917, remplace par 3017 par exemple ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  21 juillet 2006 à 20:50:23

                  Et si pour l'année, je veux qu'il marque 450?
                  Je fait $annee = $annee - 1656;

                  Non?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 juillet 2006 à 21:12:57

                    ça devrait fonctionner, en effet. Essaie toi, on n'a rien à perdre :D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 juillet 2006 à 0:33:05

                      J'essaye tout ça, et je vous dit quoi demain.


                      Tout fonctionne, merci beaucoup pour l'idée d'accélérer le temps
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Recréé fonction de temp

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown