Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire une action au bout de x sec sans arreter le prog

comment faire?

Sujet résolu
    26 mai 2006 à 21:32:17

    Salut, dans un jeu je voudrais que quand on passe à un endrois on attende 1 sec avant de pouvoir avancer mais le probleme c'est que comme je fais une boucle le prog est "arreté" pendant ce temps donc l'autre personnage ne peut plus avancer. Mais je ne vois pas comment faire autrement qu'une boucle.
    Voici mon code: (il fit partie d'une fonction)
    if (carte[position.x][position.y - 1] == MUR_BOUGE)
            {
                temps1 = SDL_GetTicks();
                while (temps2 - temps1 < 1000)
                {
                    temps2 = SDL_GetTicks();
                }

                carte[position.x][position.y - 1] = MUR_BOUGE_OUVERT;
            }


    Donc voilà est-ce que quelqu'un pourrait me dire comment je pourrais faire autrement pour que mon prog ne s'arrete pas?

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2006 à 21:55:16

      Au lieu de ta boucle, tu peux faire, dans ta boucle d'événements générale, une condition, du genre :
      Si(ça fait plus d'une seconde qu'on a fait l'action){
      on recommence et on met le chrono à jour
      }
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2006 à 22:27:52

        si tu mettais l'autre personnage dans ta boucle while (donc son controle) peut etre que ca pourrait passer meme si c'est barbare !

        Je ne vois que ca pour l'instant^^
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2006 à 22:35:24

          au lieu de mettre un while si tu met un if sa devrais marcher

          tu utilise une variable pour qui bloque le deplacement et si tu rentre dans le if la variable et debloc le deplacement
          • Partager sur Facebook
          • Partager sur Twitter
            27 mai 2006 à 16:00:42

            Ok merci ça ça marche mais je voudrais savoir aussi si on peut sortir d'un if?
            Ex avec les switchs on fait break; et ça sort du switch mais est-ce que c'est possible avec des if?

            merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              27 mai 2006 à 16:05:40

              On en sort pas d'un if, enfin on n'oblige pas le programme a en sortir, si tu dois le faire c'est qu'il y a sûrement une solution bien meilleure.

              Moi ce que je ferais, c'est simple:

              Tu continu a faire marcher ton programme normalement, en enregistrant le temps au changement d'endroit, après au moment de faire bouger le perso, tu calcules la différence de temps.
              Si c'est supérieur a une seconde, tu peux bouger, sinon non. De cette manière ton programme continue de tourner.

              PS: Ca se peut que ce ne soit pas 1 seconde exactement avec cette méthode. Par exemple si ta boucle met 20ms à s'effectuer, il se peut que le temps de bloquage soit de 1,020 secondes, mais c'est insignifiant.

              J'espers que je t'ai aidé !
              • Partager sur Facebook
              • Partager sur Twitter
                27 mai 2006 à 16:09:56

                Oui et non^^
                En fait je voyais comment faire pour le temps donc de ce coté là tu ne m'as pas aidé^^
                Mais tu m'as dis qu'on ne pouvait pas sortir d'un if et là tu m'as aidé^^

                En tout cas merci de votre aide, mon sujet est résolu
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2006 à 16:23:10

                  En réalité, je n'ai aps dit qu'on ne pouvait pas sortir d'un if, car en fait je n'en ai aucune idée, c'est peut être possible, mais à mon avis ce n'est aps propre, comme le goto.

                  Mais ça me parait bizarre, et pour ce que tu veux faire, ce n'est pas du tout obligatoire > voir la méthode que j'ai donnée plus haut.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mai 2006 à 17:37:44

                    Ben en fait ce n'est pas tout a fait pour le code d'en haut c'est pour autre chose.
                    Mais je crois que dand mon cas je vais faire un switch quand meme
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mai 2006 à 21:05:36

                      On devrait pouvoir utiliser un timer qui s'arrete de lui-même apres une execution (si le timer renvoie 0 il s'arrete? Sinon on peut utiliser une class contenant l'adresse de ton personnage et l'adresse du pointeur).
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 mai 2006 à 21:48:27

                        Merci de ton aide mais c'est bon j'ai fais un GetTicks en fin de boucle generale pour ne pas perturber le reste
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Faire une action au bout de x sec sans arreter le prog

                        × 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