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 :

Gerer le temps d'un jeu en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut Gerer le temps d'un jeu en c++
    slt! j'aimerai faire 1 pti jeu en c++ (en console) dans lequel le joueur devra saisir un mot et je voudrai limiter son temp jeu, genre le programme s'arrete s'il n'a pas pu saisir le mot a temp! comment faire svp?

  2. #2
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Par défaut
    Salut
    À mon avis, le plus propre est d'utiliser des threads interruptibles. Ceux de la STL ne conviennent pas mais ceux de boost oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <boost/chrono.hpp>
    #include <boost/thread/thread.hpp>
    #include <iostream>
    int main() {
        std::string reponse;
        auto lireReponse = [&reponse] () { std::getline(std::cin, reponse); }; 
        boost::thread th(lireReponse);
        if (not th.try_join_for(boost::chrono::seconds(5))) {
            std::cout << "\ntrop tard..." << std::endl;
            exit(-1);
        }
        std::cout << "\nreponse lue : " << reponse << std::endl;
        return 0;
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut
    bsr! stp pourrais-tu expliquer en détails? je suis un peu perdu, je débute en programmation .

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Il n'est nul besoin de sortir boost si le but est que le thread à côté arrête le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <thread>
    #include <iostream>
    int main() {
    	std::thread th([&](){ std::this_thread::sleep_for(std::chrono::seconds(5)); std::cout << "timeout !" << std::endl; exit(-1); });
    	std::cout << "taper un mot : ";
    	char c;
    	std::cin >> c;
    	std::cout << "lettre : " << c << std::endl;
    	exit(0);
    }
    C'est typiquement un truc que la console rend galère à mettre en place par son aspect bloquant sur les inputs.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 155
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Je suggère donc de passer la console en mode brut.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Par défaut
    @bousk: oui, cette solution fonctionne bien dans ce cas simple mais si tu as besoin de faire quelque chose qui prend un peu de temps après la saisie ou de faire une deuxième saisie, ça ne fonctionne plus. Même pour un jeu simple, j'imagine qu'il y aura plusieurs saisies en boucle, d'où l'idée des threads interruptibles.

    @Cedric21: par défaut, la saisie clavier (getline ou >>) est bloquante donc la fonction principale (main) ne peut pas demander une saisie et en même temps compter 5s. Donc l'idée est de faire la saisie (lireReponse) dans un thread séparé (th) comme ça on peut mesurer le temps en parallèle dans le thread principal. La méthode try_join_for permet d'attendre la fin du thread de saisie ou de l'interrompre au bout d'un temps donné; un booléen est retourné pour indiquer quel cas s'est produit.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2011, 19h32
  2. Gerer le temps en C
    Par ayoub1989 dans le forum Réseau
    Réponses: 6
    Dernier message: 15/06/2011, 12h00
  3. gerer le temps d'affichage d'une tooltip
    Par monmiez dans le forum VB.NET
    Réponses: 0
    Dernier message: 26/11/2008, 15h48
  4. Réponses: 1
    Dernier message: 10/09/2006, 13h02

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