Partage
  • Partager sur Facebook
  • Partager sur Twitter

Librairie C++

console

    11 novembre 2007 à 19:53:22

    Salut.
    Voila je voudrai faire un Tetrix en C++ en mode console mais j'ai besoin d'une librairie autre que SDL pour pouvoir gérer les évènement.

    Je sais vous allez me dire
    Mais pourquoi faire ça en mode console et pas en mode fenêtre?
    Et bien tous simplement car c'est plus simple en console(J'ai déjà prévue comment faire) et que puis voila.
    • Partager sur Facebook
    • Partager sur Twitter
      11 novembre 2007 à 20:10:57

      NCurses ou PDCurses probablement
      • Partager sur Facebook
      • Partager sur Twitter
        12 novembre 2007 à 2:50:14

        Je vais faire du copier coller de Developpez mais bon...

        La fonction kbhit() permet de savoir si une touche est disponible ou non dans le buffer du clavier. Si une touche est présente, alors une lecture par la fonction getch() suffit.
        • Partager sur Facebook
        • Partager sur Twitter
          12 novembre 2007 à 19:00:08

          Bonjour.

          Merci pour vos reponse mais je suis en 3éme et pas trés bon en angler :D .

          Donc vous auriez pas un tuto francais qui vas avec SVP?
          Merci d'avance
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 novembre 2007 à 21:58:50

            Depuis quand developpez.com est en anglais ?
            • Partager sur Facebook
            • Partager sur Twitter
              13 novembre 2007 à 0:35:49

              (Je crois qu'il a vu .com et que donc il est pas allé sur le site)
              • Partager sur Facebook
              • Partager sur Twitter
                13 novembre 2007 à 13:31:01

                Oui sur développez.com je n'avais pas vue qu'il y avait quelque chose au dessus, maintenant j'ai une commande qui me vas un peu mieux mais je veux qu'il n'attende pas que j'appuie sur une touche, faire si on appui sur truc alors machin et sinon on passe son chemin
                • Partager sur Facebook
                • Partager sur Twitter
                  13 novembre 2007 à 18:37:48

                  Il te faut programmer un Thread(fil d'exécution concurrent) qui va rouler en même temps que le reste de ton programme qui lui peut attendre l'entrée du clavier pendant que le programme principal continu le jeu.

                  C'est assez compliqué pour un débutant alors que ce système est déjà en place dans des librairies comme la SFML qui est beaucoup plus adapté pour un projet comme le tien à ton niveau
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 novembre 2007 à 16:58:29

                    Je suis assez d'accord avec MatteX, ça peut te paraître plus compliqué en fenêtre avec les graphismes mais au niveau de la gestion des évenements je pense que ça sera plus pratique. Quitte à utiliser la SDL. Personnellement j'aime bien la SFML mais les tutos du site officiel ne sont pas très complets et la doc est en anglais donc ça serait peut être plus pratique pour toi d'utiliser la SDL, il y a un bon tuto dessus je crois dans la partie langage C (rien ne t'empêches d'utiliser la SDL en C++ c'est le même fonctionnement).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 novembre 2007 à 17:02:57

                      Mais je pense pas que les thread soient nécessaire!
                      Si je ne m'abuse, kbhit() retourne un int > 1 si quelque chose est tapé sans bloquer le programme. Et si kbhit() renvoie > 1, getch() récupère cette touche!
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 novembre 2007 à 17:28:33

                        Certes vrai, mais c'est windows-only et pas standard...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 novembre 2007 à 14:30:36

                          On peut toujours recoder les fonctions getch et kblith

                          et si tu as la flemme de les recoder tu peux utiliser cette source

                          1. // additional headers for simple console functions under linux,
                          2. // similar to conio.h in windows.
                          3. // used for irrKlang linux examples
                          4. #ifndef __IRRKLANG_CONIO_H_INCLUDED__
                          5. #define __IRRKLANG_CONIO_H_INCLUDED__
                          6. #if !defined(_WIN32) && !defined(_WIN64)
                          7. #include <termios.h>
                          8. #include <unistd.h>
                          9. #include <stdio.h>
                          10. #include <memory.h>
                          11. #include <stdlib.h>
                          12. // sleeps 100 milliseconds
                          13. inline void sleepSomeTime() { usleep(100000); }
                          14. // returns if keyboard has been hit
                          15. int kbhit(void)
                          16. {
                          17.         termios oldTerm, newTerm;
                          18.         int fd = 0;
                          19.         tcgetattr(fd, &oldTerm);
                          20.         newTerm = oldTerm;
                          21.         newTerm.c_lflag = newTerm.c_lflag & (!ICANON);
                          22.         newTerm.c_cc[VMIN] = 0;
                          23.         newTerm.c_cc[VTIME] = 1;
                          24.         tcsetattr(fd, TCSANOW, &newTerm);
                          25.         int c = getchar();
                          26.         tcsetattr(fd, TCSANOW, &oldTerm);
                          27.         if (c != -1)
                          28.                 ungetc(c, stdin);
                          29.         return ((c != -1) ? 1 : 0);
                          30. }
                          31. // waits for the user to enter a character
                          32. int getch()
                          33. {
                          34.         termios oldTerm, newTerm;
                          35.         tcgetattr( STDIN_FILENO, &oldTerm );
                          36.         newTerm = oldTerm;
                          37.         newTerm.c_lflag &= ~( ICANON | ECHO );
                          38.         tcsetattr( STDIN_FILENO, TCSANOW, &newTerm );
                          39.         int character = getchar();
                          40.         tcsetattr( STDIN_FILENO, TCSANOW, &oldTerm );
                          41.         return character;
                          42. }
                          43. #endif // !defined(_WIN32) && !defined(_WIN64)
                          44. #endif // __IRRKLANG_CONIO_H_INCLUDED__


                          issue de la bibliothèque Irrklang

                          par contre si tu l'integres dans ton projet alors crée un fichier cpp pour y mettre le code des fonctions (histoire de coder proprement)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 novembre 2007 à 18:10:28

                            J'ai télécharger et installer conio, maintenant le problème est pour récupérer le temps écoulé qui la plus par du temps est en miliseconde
                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 novembre 2007 à 18:27:12

                              j'ai pas trop compris ce que tu voulais dire mais si tu veux calculé le temps passé entre 2 étapes il te faut utiliser la fonction time() de ctime :

                              1. #include <ctime>
                              2. //....
                              3. time_t temps_depart = time(0);
                              4. time_t temps_ecoule = 0;
                              5. // ... actions ...
                              6. temps_ecoule = time(0) - temps_depart;


                              le tout sera en millisecondes, mais tu peux facilement le transformer.

                              PS. time_t est si je me souviens bien un typedef de unsigned int
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Librairie C++

                              × 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