Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de prise de caractère avec Ncurses

    4 février 2024 à 19:47:47

    Bonjour,

    J'ai créé une fonction Lire_Direction pour un jeu que je voudrais coder. Or la fonction prend en compte la flèche de gauche, la flèche de droite et la touche s mais pas la touche r et le A majuscule.
    Voici le code.

    vvoid Lire_Direction(char *direction) {
        char tab;
    
        while (1) {
    	clear();
            printw("Que voulez-vous faire : jouer à Gauche, à Droite, faire une Rotation, Sauvegarder ou bien Afficher le classement ?\n");
            printw("Fleche gauche pour Gauche, fleche droite pour Droite, r pour Rotation, s pour Sauvegarder et A pour Afficher le classement :\n");
            printw("Direction: ");
            refresh();
            
            tab = getch();
    
    
            if (tab == KEY_LEFT || tab == 'g') {
                *direction = 'g';
    
                return;
            } 
    	else if (tab == KEY_RIGHT || tab == 'd') {
                *direction = 'd';
    
                return;
            }
    	else if (tab == 'A') {
                *direction = tab;
    
                return;
            }
    	else if (tab == 'r'){
    	    *direction = tab;
    
                return;	
    		} 
    	else if (tab == 's') {
                *direction = 's';
    
                return;
            } 
    	else if (tab == '\n') {
                printw("Mauvaise entrée ! Vous avez appuyé sur Entrée.\n");
                printw("Veuillez réessayer : \n");
                refresh();
                sleep(2);
            } 
    	else {
                printw("Mauvaise entrée ! Seules les touches fléchées gauche/droite, r, s et A sont valides.\n");
                printw("Veuillez réessayer : \n");
                refresh();
                sleep(2);
            }
        }
    }
    
     

    -
    Edité par TheFreedomIWant 4 février 2024 à 20:09:04

    • Partager sur Facebook
    • Partager sur Twitter
      4 février 2024 à 20:01:58

      Edit: j'avais pensé à un problème de clavier azerty / qwerty, car la structure du code me semble correcte (je n'emploie pas ncurses). Mais le 'r' est au même endroit....

      Mais, stp, indente ton code.

      -
      Edité par edgarjacobs 4 février 2024 à 20:06:53

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        4 février 2024 à 20:03:53

        Voila le code indenté. J'ai pensé aussi à ça mais même avec des touches comme 't' ou encore 'b' ça ne marche pas.

        edgarjacobs a écrit:

        -

        -
        Edité par edgarjacobs il y a moins de 30s



        -
        Edité par TheFreedomIWant 4 février 2024 à 20:10:03

        • Partager sur Facebook
        • Partager sur Twitter
          4 février 2024 à 20:51:19

          Mais pourquoi se compliquer la vie en écrivant une fonction void qui reçoit l'adresse d'un char ?

          char Lire_Direction(void) {
              while(1) {
          		clear();
                  printw("Que voulez-vous faire : jouer à Gauche, à Droite, faire une Rotation, Sauvegarder ou bien Afficher le classement ?\n");
                  printw("Fleche gauche pour Gauche, fleche droite pour Droite, r pour Rotation, s pour Sauvegarder et A pour Afficher le classement :\n");
                  printw("Direction: ");
                  refresh();
                   
                  char tab=getch();
                  if(tab == KEY_LEFT || tab == 'g')
                      return('g');
          		if(tab == KEY_RIGHT || tab == 'd')
          			return('d');
          		if(tab == 'A' || tab == 'r' || tab == 's')
                      return(tab);
          		if(tab == '\n')
                      printw("Mauvaise entrée ! Vous avez appuyé sur Entrée.\n");
          		else
                      printw("Mauvaise entrée ! Seules les touches fléchées gauche/droite, r, s et A sont valides.\n");
          		printw("Veuillez réessayer : \n");
                  refresh();
                  sleep(2);
              }
          }



          -
          Edité par edgarjacobs 4 février 2024 à 21:08:39

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          Problème de prise de caractère avec Ncurses

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown