Signaler

Comment lire la console. [Résolu]

Posez votre question toufeux 27Messages postés vendredi 24 février 2017Date d'inscription 18 mai 2017 Dernière intervention - Dernière réponse le 18 mai 2017 à 22:18 par [Dal]
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;
}
Afficher la suite 
Utile
+0
plus moins
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 27Messages postés vendredi 24 février 2017Date d'inscription 18 mai 2017 Dernière intervention - 18 mai 2017 à 19:38
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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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 27Messages postés vendredi 24 février 2017Date d'inscription 18 mai 2017 Dernière intervention - 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. =(
Répondre
[Dal] 4321Messages postés mercredi 15 septembre 2004Date d'inscription ContributeurStatut 29 mai 2017 Dernière intervention - 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !