Partage
  • Partager sur Facebook
  • Partager sur Twitter

détection de touche en c sur Ubuntu

    26 octobre 2021 à 21:29:42

    Bonjour/bonsoir à vous,

    Je suis débutant, mais j'ai pour travail de créer un jeu (space invader) en c sous linux.

    Cependant je rencontre 3 problèmes:

    Malgré mes nombreuses recherches je ne trouve pas comment faire en sorte de détecter les touches du clavier afin de les associer à une fonction, par exemple si j'appuis sur la flèche de gauche mon vaisseau ira à gauche.

    Deuxième problème, puisque je dois faire fonctionner le jeu sur le terminal, je ne sais pas comment initier ou définir la longueur et hauteur de la fenêtre du terminal afin de placer mon vaisseau à l'endroit souhaité. Au passage mon vaisseau est un vaisseau créer en ascii étendu dans un fichier txt.

    Enfin dernier problème et je pense le plus compliqué, mettre en place une hitbox. Alors là, vraiment aucune idée.

    Si quelqu'un à une idée et veut bien m'aider je lui serait énormément reconnaissant !

    Ps: J'aimerais ne pas utiliser les librairies sdl ou bien ncurses si possible.

    Bonne soirée/journée.

    • Partager sur Facebook
    • Partager sur Twitter
      26 octobre 2021 à 23:10:56

      Hello,

      Si tu veux utiliser sdl, il faut -- mais ça nécessite d'avoir un bagage un C -- lire un tutoriel. Et pas celui de oc, qui n'est plus à jour depuis des années. Celui de zeste de savoir est très correct.

      Edit: désolé: je n'avais pas bien vu: "j'aimerais ne pas utiliser"  :honte:

      -
      Edité par edgarjacobs 26 octobre 2021 à 23:14:32

      • 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

        27 octobre 2021 à 1:52:40

        Salut TonyPasothanang,

        Tu peux regarder ce topic, qui explique comment passer le terminal en mode raw pour faire ce que tu veux sans utiliser de bibiothèque, mais juste les capacités du terminal POSIX.

        https://openclassrooms.com/forum/sujet/getch-sous-linux

        Il y a aussi des posts dans ce même topic sur l'utilisation des séquences d'échappement, qui te serviront pour diverses choses (mettre de la couleur, déplacer le curseur à un endroit souhaité, vider l'écran,...). Renseigne toi sur les séquences d'échappement.

        Pour le dimensionnement, vois ce topic : https://apple.stackexchange.com/questions/33736/can-a-terminal-window-be-resized-with-a-terminal-command/47841

        -
        Edité par Dlks 27 octobre 2021 à 1:52:54

        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2021 à 1:56:41

          bonjour,

          alors si tu n'as pas envie d'utiliser une bibliothèque tierce comme ncurses, il va falloir te taper toute le doc concernant les terminaux …

          soit le côté simple en te débrouillant avec les codes d'échappement ANSI ;

          soit plus compliqué en passant par terminfo.

          En revanche il ne va pas falloir t'attendre à recevoir beaucoup plus d'aide ici … non seulement c'est chiant (et c'est bien pour cela qu'on recourt à des bibliothèques comme ncurses) mais c'est hyper long à expliquer en détail.

          edit : grillé ! :)

          -
          Edité par White Crow 27 octobre 2021 à 1:57:57

          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2021 à 4:27:32

            J'ai travaillé avec terminfo il y a des lustres sur Unix.
            Crois-moi, ce n'est pas une si bonne idée que ça ...
            À l'époque, il n'y avait que de stupides terminaux du genre 24 lignes et 80 colonnes.
            Les séquences n'étaient pas les mêmes et les modes d'affichage non plus.
            Comment faire de la surbrillance ou du scrolling n'étaient pas standard non plus.
            Je préfèrerais m'en remettre à une bibliothèque standard.
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              27 octobre 2021 à 10:48:59

              Je vous remercie pour vos réponses, de ce que j’ai compris il vaut mieux utiliser des bibliothèques standards. Imaginons que je choisis ncurses, avez vous des bons tropic ou bien sites expliquant comment justement utiliser les coordonnées de la fenêtre du terminal et récupérer les touches du clavier.


              bonne journée 



              • Partager sur Facebook
              • Partager sur Twitter
                27 octobre 2021 à 11:51:08

                Oui, ça s'appelle la doc … oui c'est un RTFM.

                Plus sérieusement, tu as bon nombre de tutos et une doc bien fournie … google est ton ami.

                • Partager sur Facebook
                • Partager sur Twitter
                  27 octobre 2021 à 13:14:05

                  Mais j'ai une question, si j'utilise la librairie ncurses est-ce que je devrait l'utiliser pour l'entièreté de mon programme ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 octobre 2021 à 14:39:53

                    Comment ça pour l'entièreté ?

                    L'exécutable que tu vas créer sera lié à la bibliothèque ncurses ou statiquement ou dynamiquement. Dans les deux cas la bibliothèque sera chargée en mémoire plus ou moins au moment du chargement de ton prgramme par l'os …

                    Je ne comprends pas ta question.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 octobre 2021 à 15:01:44

                      Ce serait encore pire de faire des choses avec les librairies et d'autres "manuellement"
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                      détection de touche en c sur Ubuntu

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown