Faire un Chrono timout [Fermé]

Signaler
Messages postés
48
Date d'inscription
samedi 23 septembre 2017
Statut
Membre
Dernière intervention
19 avril 2020
-
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
-
Bonjour ,

Je m'explique , je cherche à refaire un jeux connu ou le but et de trouver le maximum de mot qui commence par une lettre tirée aleatoirement en 30 sec . et mon probleme et la . Comment faire comprendre au code qu'il doit s'arreter au bout de 30 sec sans pour autant bloqué le code ni avec Sleep ni avec cin>>
Merci

2 réponses

Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
en mode console, si tu veux faire un programme portable qui te permette de gérer des entrées non-bloquantes, tu peux utiliser la bibliothèque ncurses, qui en prime te permettra de gérer l'écran et en affichant le texte avec des couleurs ou enrichissements selon les capacités du terminal, en plaçant le curseur où tu veux, en effaçant le contenu des lignes, etc.

Voilà un exemple de programme qui permettrait à un utilisateur de saisir autant de chaînes qu'il peut et qui s''arrête au bout de 30 secondes en listant les chaînes qu'il a tapées.

#include <ncurses.h>
#include <string>
#include <vector>
#include <iostream>
#include <ctime>

int main(void) {
    std::string str;
    std::vector<std::string> sv;

    initscr();
    keypad(stdscr, TRUE);
    nodelay(stdscr, TRUE);

    addstr("Type strings during 30 seconds (press ENTER to finish the string)\n");
    move(5, 0);
    std::clock_t start;

    while (1) {
        char ch;

        ch = getch();
        if (ch != ERR) {
            if (ch != 10) {
                str.push_back(ch);
            } else {
                sv.push_back(str);
                str.clear();
                clrtoeol();
            }
            refresh();
        }
        if ( (( std::clock() - start ) / (double) CLOCKS_PER_SEC) > 30 )
            break;
    }
    nodelay(stdscr, FALSE);
    endwin();

    std::cout << "You typed the following strings:" << std::endl;
    for(std::string s : sv) {
        std::cout << s << std::endl;
    }

    return 0;
}

avec g++ cela se compile avec l'option
-lncurses
et il faut, pour que la compilation se produise correctement, que les entêtes de ncurses et ses binaires soient dans un emplacement standard ou connu du compilateur.

C'est un programme simple, pour te montrer comment faire, sans gestion des touches particulières fléchées ou de suppression, qu'il faudrait rajouter si tu veux.

Tu peux aussi ajouter l'affichage d'un décompte du temps restant à des coordonnées précises de l'écran, le décompte des chaînes entrées, des points, etc.

Dal
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56974 internautes nous ont dit merci ce mois-ci

Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
le programme ci-dessus a été testé sous Linux et devrait fonctionner de façon similaire sous Windows et toutes les plateformes sur lesquelles ncurses a été porté. Sous Windows, en dehors des portages de ncurses, il y a aussi le projet PDCurses qui est basé sur ncurses et pour lequel des binaires à jour sont plus faciles à trouver :

https://pdcurses.org/
https://sourceforge.net/projects/pdcurses/
https://github.com/wmcbrine/PDCurses
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
si tu ne sais pas comment faire pour installer une bibliothèque dans ton environnement Windows, tu peux suivre le tutoriel suivant, qui prend pour exemple l'installation de la bibliothèque libcurl pour une utilisation par Codeblocks avec la chaîne de compilation MinGW sous Windows:

https://www.commentcamarche.net/faq/35736-installer-sous-codeblocks-avec-mingw-une-bibliotheque-librairie-compilee
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
Bonjour codrux,

Est-ce un programme console ?

Est-ce un programme qui doit fonctionner seulement sous Windows, ou un autre système d'exploitation donné, ou doit-il être portable pour fonctionner sur plusieurs ?

Dal
Messages postés
48
Date d'inscription
samedi 23 septembre 2017
Statut
Membre
Dernière intervention
19 avril 2020
8
Bonjour dal ,

Merci pour ta reponse . Alors oui de preference portable . Apres une option windows ne me derangerai pas nn plus
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
est-ce un programme console ou avec une interface graphique Windows ?
Messages postés
48
Date d'inscription
samedi 23 septembre 2017
Statut
Membre
Dernière intervention
19 avril 2020
8
nn nn c'est un programme console