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 :

Arrêt du programme au bout d'un temps fixé


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    essect tunis
    Inscrit en
    Octobre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : essect tunis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 5
    Points : 9
    Points
    9
    Par défaut Arrêt du programme au bout d'un temps fixé
    j'ai fait ce compteur du temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include <stdio.h>
    #include <time.h>
     
    void attendre(float temps);
     
    int main(void)
    {
        int compteur;
     
        for(compteur=120;compteur>0;compteur--){
             attendre(1);
        }
     
        puts("erreur !!!\n");
     
        return 0;
    }
     
    void attendre(float temps)
    {
        clock_t arrivee=clock()+(temps*CLOCKS_PER_SEC); // On calcule le moment où l'attente devra s'arrêter
     
        while(clock()<arrivee);
    }

    je veux ce programme s' arrêt si il dépasse 2 min ou affiché " Bravo, vous avez trouve le nombre mystere "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main ( int argc, char** argv )
    {
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 100, MIN = 1;
     
       srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
     
     
        do
        {
            // On demande le nombre
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
     
     
            if (nombreMystere > nombreEntre)
                printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
                printf("C'est moins !\n\n");
            else
                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
     }
    c'est possible ou non ???? si oui , comment je le fais ??

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Sur une plate-forme *n*x, alarm() enverra un signal SIGALRM, qui devrait être suffisant pour interrompre une saisie bloquante.
    Pense à traiter le signal par contre, sinon ça tuera le programme.

  3. #3
    Membre chevronné
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 856
    Points : 2 181
    Points
    2 181
    Par défaut
    J'ajoute à la réponse de Médinoc :
    - signal (pour empêcher ton programme de planter)
    - alarm
    - kill (pour ta culture)

    Par-contre j'avoue que je n'avais pas du tout pensé à cette solution... Moi j'étais parti pour utiliser un compteur de temps et la fonction select mais encore une fois ça n'est possible que sous unix... Donc une autre solution serait de lancer ton jeu du plus ou moins dans un thread dans lequel tu passerais un pointeur sur structure qui contiendrait le nomnre mystère et le dernier nombre entré par l'utilisateur. Hors du thread, il suffirait de faire sleep(120) (sous unix encore une fois, il te suffira de trouver l'équivalent windows qui est Sleep je crois) puis de tuer le thread quand tu sors de cet appel puis de faire les comparaisons qui s'imposent.

    Pour la 2e solution, je pense que c'est encore un peu loin de ton niveau cependant (je pense que select aussi d'ailleurs...). 'fin bref, pas mal de choix mais pas sûr que tu puisses les mettre en oeuvre.

  4. #4
    Membre chevronné
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 548
    Points : 1 754
    Points
    1 754
    Par défaut
    Bonjour
    Personnellement sur un jeu en console de ce type surtout plus ou moins, je ne vois pas l'utilité et encore moins l'utilisation d'un Timer suite à la réussite ou perte de la partie en cours.
    Dans un autre projet de jeux nécessitant l'utilisation des Timer, je suis d'avis favorable mais, pas sur ce genre de jeux.
    À la limite en peut prévoir utilisation des signaux pour éviter le plantage du jeu mais, pas plus.
    Bref, pour l'application en lui-même, la partie terminée en attend l'action du joueur qu'il est pris connaissance du message de fin de partie comme quoi oui ou non il a gagné ou perdu la partie en sollicitant une action de ça part (qu'il appuie sur une touche quelconque pour confirmer) puis, le/les menus principaux se présentent à nouveau et lui demande de faire des choix.
    En ne va pas sur un jeu consoler mettre une temporisation de 30 secondes/2 minutes et attendre la fin de ce Timer pour faire une action voir arrêter le jeux.
    Bref, il faut penser logique pour le jeux et non ajoute une telle choses pour le jeux même ci cela existe; de plus qu'il n'y a pas besoin/utilité, sans compter que si ont se lance dans ce genre de choses en s'éloigne très vite du périmètre initial et on commencera par parler de thread des signaux, des timers etc. des notion dont il maîtrise pas vraiment ou pas du tout pire encore, on rajoute de la complexité au programme et pour rien. Ce genre de jeux a t' il besoin de tout ça ?
    Bref c'était un avis, libre à lui de faire son choix
    Attention je fais pas une critique du jeux mais de l'utilité et la nécessiter de l'emploi d'un timer dans les jeux
    à bientôt

Discussions similaires

  1. Stopper un programme au bout d'un certain temp
    Par Orange74 dans le forum Général Java
    Réponses: 3
    Dernier message: 05/05/2010, 16h48
  2. [Système] Arrêt du programme
    Par milach dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2007, 22h34
  3. [Thread] Arret au bout d'un temps fini
    Par freddy766 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 22/08/2007, 09h31
  4. [C#]Arrêt du programme
    Par torNAdE dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/05/2006, 00h15
  5. Programmer un etat a c:\temp\ Best.txt
    Par valery17 dans le forum Access
    Réponses: 3
    Dernier message: 07/04/2006, 15h34

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