begin process at 2012 05 28 20:51:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Empécher l'utilisateur d'appuyer sur certaines touches


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Empécher l'utilisateur d'appuyer sur certaines touches

lundi 15 décembre 2008 à 16:43:11 | Empécher l'utilisateur d'appuyer sur certaines touches

hitachicm615

Bonjour,

J'ai un menu dans mon programme en C et l'utilisateur doit choisir entre 1 et 6.
Si l'utilisateur tape un"A" ou un autre caractère qui n'est pas 1 et 6 ce dernier caractère ne s'affiche pas.
En quelques sorte, je veux obliger l'utilsateur à taper entre 1 et 6 mais lorsqu'il tape un b par exemple rien ne s'affiche, c'est comme si on bloquai toutes les autres touches à par 1,2,3 ...

On peut faire ca ?

Merci
mardi 16 décembre 2008 à 14:24:25 | Re : Empécher l'utilisateur d'appuyer sur certaines touches

Pistol_Pete

Salut
Tu peux jouer avec kbhit et getch pour y arriver. Voici un petit exemple.

#include <conio.h>
int main()
{
    int c;
    printf("Appuyer sur un chiffre de 1 a 9\n");   
    do
    {
        kbhit();                    //Une touche a été appuyé
        c=getch();                    //On recupère la touche appuyé
        if(c>=48 && c<=57)            //On test si c'est un chiffre
            printf("%i\n",c-48);    //Si oui on l'affiche
    }
    while(c<48 || c>57);
}

A+

________________________________________________________________________________
Mon site internet :
   [ Lien ]

mardi 16 décembre 2008 à 16:16:13 | Re : Empécher l'utilisateur d'appuyer sur certaines touches

hitachicm615

Ok, mais j'ai un problème j'entre un chiffre entre 1 et 6
Mais dérrière j'ai un switch et il ne le prend pas en compte, je met n'importe quel chiffre et il rentre dans le case 1, ne demande pas les pseudo de jeu et ca fait des signes bizarres.
Voici mon code :

do
                {
                    kbhit();                    //Une touche a été appuyé
                    choixmenu=getch();                    //On recupère la touche appuyé
                    if(choixmenu>=49 && choixmenu<=54)//On test si c'est un chiffre
                     {printf("%d\n",choixmenu-48);    //Si oui on l'affiche
                     choixmenu = choixmenu-48;
                     }
                }
                while(choixmenu<49 || choixmenu>54);

  // Switch qui permet la selection du mode de jeu dans le menu principale

switch (choixmenu)
    {
        case 1:                                                              //Mode 1VS1 joueur contre joeur
        system("cls");
        printf("\n\n\t\tJoueur 1, tapez votre pseudo de jeu : ");
        scanf("%s", &pseudo1);
        printf("\n\n\t\tVotre pseudo a bien ete enregistre.\n\n\n\n\n\n\n\n\n\n\n", pseudo1);
        printf("\t\tJoueur 2, tapez votre pseudo de jeu : ");
        scanf("%s", &pseudo2);
        printf("\n\n\t\tVotre pseudo a bien ete enregistre.\n\n\n\n\n\n\n\n\n\n");
        printf("\t\t\t%s et %s BONNE CHANCE !!!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", pseudo1, pseudo2);
        system("PAUSE");
        break;
mardi 16 décembre 2008 à 18:42:44 | Re : Empécher l'utilisateur d'appuyer sur certaines touches

Pistol_Pete

Il faudrait apprendre à utiliser les debuggeur. C'est très simple et rapide.
Tu verrais qu'il ne faut pas faire choixmenu = choixmenu-48; dans la boucle while. Comment tu peux sortir de cette boucle si tu changes la valeur avant le test.

Faut mettre choixmenu = choixmenu-48; après la boucle while.

A+

_____________________________________________________________________________
Mon site internet :
   [ Lien ]

mercredi 17 décembre 2008 à 01:44:24 | Re : Empécher l'utilisateur d'appuyer sur certaines touches

magic_Nono

Membre Club
exact, où sortir du while avec un break apres ton traitement spécifique.

pareillement, le if est inutil, vu que c'est exactement le test inverse...

donc




do
                {
                    kbhit();                    //Une touche a été appuyé
                    choixmenu=getch();                    // recup touche appuyée
                }
                while(choixmenu<49 || choixmenu>54);
// ASSERT (choixmenu>=49 && choixmenu<=54)
//ie : c'est un chiffre
                     choixmenu -= 48;// modif de la valeur ascii en valeur décimale
                     printf("%d\n",choixmenu);    //Si oui on l'affiche
                    

  // Switch qui permet la selection du mode de jeu dans le menu principale

switch (choixmenu)
...
___________________________________________________________
Magicalement
Nono


Cette discussion est classée dans : utilisateur, touches, tape, empécher, appuyer


Répondre à ce message

Sujets en rapport avec ce message

Touches automatiques [ par TiotBour ] Bonjour,J'ai chercher dans l'aide et sur le site, je pense que c'est les mots que je tape qui ne vont pas, peut etre que quelqu'un pourra m'aider.J'ex PROGRAMMATION EVENNEMENTIELLE (C et/ou C++) [ par tekila_bandita ] Bonjour,J'aimerais pouvoir "récupérer" d'une façon evennementielle ce que tape l'utilisateur...En gros, mon probleme c'est que j'aimerais pouvoir gére Touches du clavier dans MFC [ par morganroux ] J'ai créer une appli en boite de dialogue MFC. J'utilise Visual Studio 2003 .NET et je programme en c++Le problème que j'ai c'est que lorsque j'appui Contourner les touches entrée et echap une boîte de dialogue MFC [ par fuliculi ] Bonjour à tous,j'ai un boite de dialogue ouverte depuis une autre boite de dialogue MFC. J'ai redéfini les fonctions OnOK et OnCancel pour que ma fenê saisie de caractère besoin urgent [ par rab21 ] bonjour à tous!! voilà je suis un ptit newbie de la programmation :) et j'aimerai savoir comment jpourrais faire ce ptit programme:je dois pouvoir sai Lancer un processus sous windows avec le nom d'utilisateur SYSTEM [ par logant83 ] Bonsoir, voila alors j'aimerai pouvoir lancer ma base MySQL quand je lance mon programme mais pour ce faire faut que je le mette dans les processus ma verification reponse utilisateur [ par blinix123 ] J'aimerais une ligne qui me permette de veriffier la reponse de l'utilisateursaisir "voulez vous continuer ? o/n", reprep = maj(rep)tant que rep"O" et re pb de swich [ par blinix123 ] oid main (){ int rep;    cout  cout << "1: entrer un nouveau groupe/artiste (Win32) Recuperer l'appui de touches simultanees [ par mogwai93 ] Bonjour, je cherche un code qui me permet de savoir si plusieurs touches sont simultanement appuyees par exemple : Ctrl + Lettre, Maj + Lettre, Ctrl Un programme qui en créé un autre. [ par darkdidi ] Bonjour!Je voudrais savoir comment faire un programme qui créé une application en prenant en compte des parametres de la part de l'utilisateur.Voici c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales