Faire un Chrono timout

Fermé
codrux Messages postés 48 Date d'inscription samedi 23 septembre 2017 Statut Membre Dernière intervention 19 avril 2020 - 27 juin 2019 à 14:05
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 28 juin 2019 à 18:16
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
A voir également:

2 réponses

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié le 28 juin 2019 à 16:05
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
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié le 28 juin 2019 à 18:12
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
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
28 juin 2019 à 18:16
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://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié le 28 juin 2019 à 10:16
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
0
codrux Messages postés 48 Date d'inscription samedi 23 septembre 2017 Statut Membre Dernière intervention 19 avril 2020 20
28 juin 2019 à 12:26
Bonjour dal ,

Merci pour ta reponse . Alors oui de preference portable . Apres une option windows ne me derangerai pas nn plus
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
28 juin 2019 à 14:15
est-ce un programme console ou avec une interface graphique Windows ?
0
codrux Messages postés 48 Date d'inscription samedi 23 septembre 2017 Statut Membre Dernière intervention 19 avril 2020 20
28 juin 2019 à 14:17
nn nn c'est un programme console
0