Petit problem avec switch [Résolu]

Signaler
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005
-
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005
-
Salut,

Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.

J'ai le codde suivant.

#include <stdio.h>
#include <conio.h>
#include 

const char ESC    = 27;
const char UP      = 72;
const char LEFT    = 75;
const char RIGHT = 77;
const char DOWN = 80

int main() {
   char key = LEFT;
   int done = 0;
   int x 1, y 1;
   
   while(!done) {
      key = getch();
      
      switch(key) {
      case UP:      y-- ; break;
      case DOWN: y++; break;
      case LEFT:    x--; break;
      case RIGHT: x++; break;
      case ESC:     done = 1; break;
      default:
          cout << key;
          x++;
      }
      
      gotoxy(x,y);
    }

return 0;
}  

Le probleme est que lorsque j'appuie sur une fleche, le code dans default est execute aussi. Je crois que le probleme est avec switch.

Je veux savoir la nature du probleme ainsi que comment le contourner.

Merci !


Party 'till you drop !!!

12 réponses

Messages postés
96
Date d'inscription
mardi 2 avril 2002
Statut
Membre
Dernière intervention
7 août 2005

En faite , l explication viens du fait qu'en ASCII , les fleches generent deux caracteres ... donc si tu prend que le 1er , ca marche pas ... c un peu comme si tu essaye d'intercepter un CONTROLE + ALT avec un seul caractere :/
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
en fait il ne s'éxécute pas "aussi", c'est le seul a être éxécuté (et heureusement), tout simplement parce que tu n'as pas les bons codes pour les touches
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

Vecchio, c'est quoi alors le code que tu utilises pour les touches? J'ai re-tester et elle sont bonnes.

J'utilise TC++ si ca peut faire une difference

Party 'till you drop !!!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
alors il a un petit pb ton turboc++ s'il continue malgré le break
vc++6 me donne a chaque fois -32 pour un fleche, encore plus bizarre... quoi que non car getch = get character et les fleches ne sont pas des caractères.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
eu..., quand tu definie tes constantes faudrait peut etre caster en char(si tc++ est capricieux)

genre const char ESC = (char)27;
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
tc++ c pas un peu dépassé par hasard??
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
completement meme, les os avec noyau dos sont en voie de disparition :big)
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

djl, non, ca change rien.

depasse ou pas, c'est tres bon pour apprendre!
et aussi je suis nostalgique des jeux sous dos :D

Party 'till you drop !!!
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ouai c vrai que le mode 3h a un certain charme!
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

woooooooooooow, j'ai fini par trouver dans une autre source

il re-utiliser getch pour attraper une autre valeur qui est je sais pas trop quoi. Le code est revient a ca

while(!done) {
key = getch();

if (key == 0) {
key = getch();
switch(key) {
case UP: y-- ; break;
case DOWN: y++; break;
case LEFT: x--; break;
case RIGHT: x++; break;
}
}else if (key ESC) done 1;
else {
cout << key;
x++;
}

gotoxy(x,y);
}


Je vais aller chercher maintenant mais si quelqu'un connais un bon site (francais ou anglais) sur la manipulation du clavier et des chaines sous TC++, postez le ici. Merci

et djl, hehe, "charme", c'est le mot juste :_

Party 'till you drop !!!
Messages postés
5
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
15 avril 2005

j'ai pris ton prog et j'ai resolu le programme il faut que tu enleve carrement x++
dans default:
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

En faite youssefbarca, lis ce que Viper31 a ecrit--il a raison.

Party 'till you drop !!!