Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit doute sur la gestion du temps.

Mettre Zozor en Pause..

    8 mai 2006 à 23:02:32

    Bonsoir tout le monde !! :)

    J'ai lu le dernier chapitre de c/c++ sur la gestion du temps, et j'ai fait l'exercice qui fait rebondir Zozor sur les bords de la fenêtre.

    Jusque là, absolument aucun probleme.
    Mais ensuite, M@teo propose de stopper/demarrer Zozor en appuyant sur une touche !
    Mais la touche n'est que TRES rarement prise en compte puisque le programme dors quasiment tout le temps ! :p

    La chose est-elle impossible à faire sans manger tout le CPU ?

    Merçi d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2006 à 0:23:41

      Avec un intervalle de 20-30ms j'ai aucun problème. Avec un intervalle de 1000ms en revanche c'est la bataille je suis d'accord.
      • Partager sur Facebook
      • Partager sur Twitter

      If you'd like to join us, read "How do we work at OpenClassrooms"! :)

        9 mai 2006 à 7:26:27

        du coup pour un snake, avec 500 ms (niveau faicle) les touches ne sont pas tjrs prises en compte ...

        y'a t il une astuce ?
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2006 à 13:12:15

          Fais pas de sdldelay, tu auras plus de problème ;)
          Oui ça utilisera 100% du cpu, mais à un stade il faut choisir !
          • Partager sur Facebook
          • Partager sur Twitter

          If you'd like to join us, read "How do we work at OpenClassrooms"! :)

            9 mai 2006 à 16:12:25

            oui mais le snake ne doit pas avancer toutes les milliemes de socndes, il ira torp vite, il faut qu'il avance tous les 1/2 secondes, mais que pendant cette demi seconde, si je lui dit un autre ordre, il l'execute immediatement.

            Une genre de PollEvent(500), enfin un truc comme ca, ca peut se faire ?
            • Partager sur Facebook
            • Partager sur Twitter
              9 mai 2006 à 16:16:17

              big boucle :

              - gestion des events
              - calcul du temps écoulé

              - temps_depuis_dernier_mouvement_snake += temps écoulé
              - si (temps_depuis_dernier_mouvement_snake > temps_entre_2_mouvement)
              -- alors
              --- on se bouge les fesses
              --- et temps_depuis_dernier_mouvement_snake = maintenant

              - affichage

              - dodo si framelimit souhaité
              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2006 à 16:33:00

                Oui, t'as juste à faire un :
                const int Intervale = 80;
                int Derniere_Frame = SDL_GetTicks();

                // Boucle
                // ...
                    SDL_Delay(Derniere_Frame + Intervale - SDL_GetTicks());
                    Derniere_Frame = SDL_GetTicks();
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2006 à 16:35:47

                  Ne commence pas ta phrase par "Oui" quand tu parles d'autres chose que le post précédent. Ca risque d'embrouiller le lecteur :)
                  (Si tu proposais qq chose en fonction de mon post, il n'y a pas de notion de delay dans mon post, à part le " dodo fps" qui n'est pas lié au mouvement).
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Petit doute sur la gestion du temps.

                  × 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