Petit problem avec switch

Résolu
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005 - 11 déc. 2003 à 19:34
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005 - 16 avril 2005 à 04:14
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

Viper31 Messages postés 96 Date d'inscription mardi 2 avril 2002 Statut Membre Dernière intervention 7 août 2005
12 déc. 2003 à 20:21
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 :/
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2003 à 19:50
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
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
11 déc. 2003 à 20:26
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 !!!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2003 à 20:41
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
11 déc. 2003 à 20:47
eu..., quand tu definie tes constantes faudrait peut etre caster en char(si tc++ est capricieux)

genre const char ESC = (char)27;
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2003 à 20:52
tc++ c pas un peu dépassé par hasard??
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
11 déc. 2003 à 21:00
completement meme, les os avec noyau dos sont en voie de disparition :big)
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
11 déc. 2003 à 21:37
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 !!!
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
11 déc. 2003 à 21:42
ouai c vrai que le mode 3h a un certain charme!
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
11 déc. 2003 à 22:38
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 !!!
0
youssefbarca Messages postés 5 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 15 avril 2005
15 avril 2005 à 15:35
j'ai pris ton prog et j'ai resolu le programme il faut que tu enleve carrement x++
dans default:
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
16 avril 2005 à 04:14
En faite youssefbarca, lis ce que Viper31 a ecrit--il a raison.

Party 'till you drop !!!
0
Rejoignez-nous