IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[débutant] action tous les x temps


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut [débutant] action tous les x temps
    Bonjour,

    je suis débutant en C, et j'aimerai savoir s'il est possible d'appeler une fonction tous les x temps (toutes les demi secondes par exemple).
    J'ai testé le sleep, mais ça a l'air de me bloquer les autres processus pendant l'attente... ce n'est pas ce que je recherche.

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    au pire, tu peux faire une boucle qui tourne un moment dans le vide.

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par yobbas
    au pire, tu peux faire une boucle qui tourne un moment dans le vide.
    Ouais c'est vachement precis.

    Tout à l'heure en regardant les modules de Emmanuel je suis tombé sur le module timer, tu dois pouvoit l'utiliser.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    Ben après la programmation de la boucle dépendra de la vitesse de son PC, faut faire des essais.

    par ex(au hasard) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( int i = 0 ; i < 100000 ; i++){}
    EDIT : après faut reconnaître que niveau portabilité c'est pas tip top...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    J'ai essayé avec les timer (j'utilise les outils OpenGL/GLUT), mais apparement...on ne peut pas arrêter un timer et le relancer identiquement.
    Quand je stoppe mon timer puis je le relance, j'ai l'impression qu'ils se superposent car l'action exécutée par l'appel de la fonction a augmenté de vitesse...

    J'ai été un peu vague dans mes propos je pense...
    En fait je dois faire un jeu d'avion style Space Invaders, et c'est pour la gestion des tirs que j'ai un problème. Après avoir appuyer sur un bouton, j'aimerai que le tir se déplace sur l'axe y toutes les x millisecondes.
    Si quelqu'un avait des idées d'implémentations ou des algos tout prêts, je suis preneur .

    Merci.

  6. #6
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par shinkyo
    J'ai essayé avec les timer (j'utilise les outils OpenGL/GLUT), mais apparement...on ne peut pas arrêter un timer et le relancer identiquement.
    Quand je stoppe mon timer puis je le relance, j'ai l'impression qu'ils se superposent car l'action exécutée par l'appel de la fonction a augmenté de vitesse...

    J'ai été un peu vague dans mes propos je pense...
    En fait je dois faire un jeu d'avion style Space Invaders, et c'est pour la gestion des tirs que j'ai un problème. Après avoir appuyer sur un bouton, j'aimerai que le tir se déplace sur l'axe y toutes les x millisecondes.
    Si quelqu'un avait des idées d'implémentations ou des algos tout prêts, je suis preneur .

    Merci.
    Et time() ?
    Avant de connaitre la fonction Sleep() je ne connaissait que time() alors j'ai fait cette petite fonction Tempo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int tempo(int te)
    {
      time_t intps,int1,int2;
      double dd;
      intps = time(NULL);
      int2=intps+te;
      int1=time(NULL);
      while (int1<int2)
          int1=time(NULL);
      return(1);
    }
    A toi de la modifier a ta gise si ca peu t'aider.

  7. #7
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par yobbas
    Ben après la programmation de la boucle dépendra de la vitesse de son PC, faut faire des essais.

    par ex(au hasard) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( int i = 0 ; i < 100000 ; i++){}
    EDIT : après faut reconnaître que niveau portabilité c'est pas tip top...

    Génial ton truc....
    Si tu as d'autres idées comme celle-ci, évites de les divulguer.

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Histoire de ne pas rentrer dans une grande discussion :

    Toute attente active est à éviter... On entend par attente active le fait de faire tourner une boucle sans faire un sleep ou un timeout quel qu'il soit. Cela veut dire que le programme utilise des ressources inutiles, ce qu'on aime pas.

    Donc les solutions de yobbas et miron (bien que tout le monde à commencer par là, y compris moi) sont à éviter comme la peste ou encore pire scanf...

    Il faut utiliser une solution pour redonner la main au système et attendre patiemment sans gaspiller du temps CPU...

    Jc

  9. #9
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par shinkyo
    J'ai testé le sleep, mais ça a l'air de me bloquer les autres processus pendant l'attente... ce n'est pas ce que je recherche.
    Je suis très étonné de ce que tu nous dit là. Tu es sûr de toi ?
    Quel est ton OS ?

Discussions similaires

  1. [AC-2003] executer une action tous les mercredis
    Par chuspyto dans le forum IHM
    Réponses: 1
    Dernier message: 27/03/2010, 14h19
  2. [Débutant] Récupérer tous les fichiers modifiés d'un workspace
    Par julian_ross dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 13/08/2009, 16h48
  3. [Débutant]_Récupérer tous les widgets d'une fenêtre_
    Par orfix dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/05/2008, 22h52
  4. Réponses: 5
    Dernier message: 12/12/2006, 10h19
  5. [débutant] #PCDATA = tous les caractères voulus ?
    Par prgasp77 dans le forum Valider
    Réponses: 2
    Dernier message: 17/05/2005, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo