Comment lire la console.

Résolu/Fermé
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - Modifié le 10 avril 2017 à 15:23
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 18 mai 2017 à 22:18
Bonjour,
voici mon problème : j'ai coder un sélecteur en mode console qui utilise les flèches directionnelle, jusqu'ici pas de problème. Le problème survient lorsque je veux "sélectionner" une case du sélecteur, je ne vois pas comment faire

voici ce que j'ai commencé :
int selecteur()                                   /*interface dynamique*/
{
    /* =============variable============= */
    std::string vide (" "), indicateur("0");
     int yx(1); /* sert pour faire monter descendre l'indicateur*/
    /* =============variable============= */
    system ("cls");
    gotoxy(1,yx);
    std::cout<< "0|Jeu des allumettes";
    yx++;
    gotoxy(1,yx);
    std::cout<< " |Pas encore decider";
    yx = 1;
    for(;;)
    {

        int saisieTouche;

        saisieTouche = getch();
        if (saisieTouche == 224)        // si on utilise les flèches.
        {
                saisieTouche = getch();
        }

        if (saisieTouche == KEY_DOWN) //faire descendre le curseur.
        {
            gotoxy(1,yx);
            std::cout<< " \r";
            yx++;
            gotoxy(1,yx);
            std::cout<< "0\r";
        }
        else if (saisieTouche == KEY_UP) //faire monter le curseur.
        {
            gotoxy(1,yx);
            std::cout<< "0\r";
            yx++;
            gotoxy(1,yx);
            std::cout<< " \r";
        }
/* CASE OU JE NE SAIS PAS COMMENT FAIRE*/
        else if (saisieTouche == KEY_ENTER || 77)
        {
            if ("0|Jeu des allumettes")
            {
                mainAllumettes();
            }
            if (" |Jeu des allumettes")
            {
                std::cout<< "caca boudin";
            }
        }
/* CASE OU JE NE SAIS PAS COMMENT FAIRE*/
        yx = 1;
    }

        return 0;
}
A voir également:

2 réponses

YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
18 mai 2017 à 16:55
Déjà faire une structure de if , else if , else if ect... ça ne se fait pas trop, on va plutôt utiliser un switch. Maintenant je ne comprend pas vraiment ton problème il faudrait que tu détail un peu.
Ensuite je ne suis pas expert en c++ mais il me semble que ce n'est pas vraiment comme cela qu'on procède lorsque l'on veut capturer les input clavier.
Personnellement lorsque je dois faire ça j'utilise une librarie, il y en a pas mal de différente mais je te conseil la SDL puisqu'elle est bien documenté et relativement simple d'utilisation. Elle te permettra de manière simple d'avoir un switch sur la capture du clavier et en fonction de la touche appuyée tu lanceras une fonction.

YCN-
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017
Modifié le 18 mai 2017 à 19:46
merci de ton aide mais j'ai trouvé comment faire (je rajoute 1 ou j'enlève 1 suivant la touche pressé, je redirige vers les fonctions désiré suivant le résultat de la variable) Je suis désoler pour le dérangement.

mais je vais tacher de regarder les optimisation que je peut faire.
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 088
Modifié le 18 mai 2017 à 18:41
Salut toufeux,

Tu pourrais tester la valeur de
yx
.

Si je comprends bien, si elle vaut 1, c'est que l'on a pressé Enter alors qu'on était sur le premier choix.

Cela donnerait :
        else if (saisieTouche == KEY_ENTER || 77) {
            if (yx == 1)
                mainAllumettes();
            if (yx == 2)
                break;      /* sortir de la boucle for */
        }

ces lignes pouvant remplacer les lignes 42 à 52 du code que tu as posté sur le forum (selon la numérotation du forum, donc).

Dal
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017
18 mai 2017 à 19:45
merci de ton aide mais j'ai trouvé comment faire (je rajoute 1 ou j'enlève 1 suivant la touche pressé, je redirige vers les fonctions désiré suivant le résultat de la variable) Je suis désoler pour le dérangement. =(
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 088
18 mai 2017 à 22:18
Il n'y a pas de dérangement, de plus tu as trouvé la même solution que celle que je proposais une heure avant, on est synchrones à 1 heure près.

Bonne continuation.
0