Partage
  • Partager sur Facebook
  • Partager sur Twitter

ecrire du texte dans la console

Sujet résolu
    5 octobre 2007 à 8:58:44

    bonjour,

    bon bé voila, j'ai fait une application qui fait de nombreux calculs qui prennent un certain temps pour s'effectuer (quelques secondes) et je souhaiterais afficher l'avancement des calculs en %.
    la question est : comment fait-on pour afficher un texte à un endroit fixe dans une console? mes recherches sont restées infructueuses à ce sujet.

    merci beaucoup si vous pouvez m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      5 octobre 2007 à 9:03:36

      je suis également interessé
      • Partager sur Facebook
      • Partager sur Twitter
        5 octobre 2007 à 9:50:53

        Je vous propose un code Windows :
        regarde mon tuto (cf ma carte) le §B.3.

        --> Ce tuto vous propose une fonction pour placer le curseur a coordonnée x,y choisie, et vous propose d'écrire en couleur.

        Néamoins, il existe une option portable, pour printf (le \r), pour revenir au début de la ligne, peut etre que ce sera suffisant pour toi :

        essaye ça :
        1. #include <stdio.h>
        2. int main()
        3. {
        4.    printf("salut\n");
        5.    int i;
        6.    for(i=0;i<1000000;i++)
        7.    {
        8.        printf("%d   \r",i);
        9.    }
        10.    printf("Finish !!!!!\n");
        11.    return 0;
        12. }
        • Partager sur Facebook
        • Partager sur Twitter

        Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

          5 octobre 2007 à 10:49:16

          Citation : MC_Saturn

          j'ai fait une application qui fait de nombreux calculs qui prennent un certain temps pour s'effectuer (quelques secondes) et je souhaiterais afficher l'avancement des calculs en %.
          la question est : comment fait-on pour afficher un texte à un endroit fixe dans une console? mes recherches sont restées infructueuses à ce sujet.


          Il faut utiliser une bibliothèque de gestion du plein écran. Je recommande PDCurses (assez simple et portable).
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            5 octobre 2007 à 10:56:51

            j'ai essayé le \r et cela est suffisant pour mon application.
            merci beaucoup pour vos reponses :)
            • Partager sur Facebook
            • Partager sur Twitter
              5 octobre 2007 à 12:56:40

              Citation : -ed-


              Il faut utiliser une bibliothèque de gestion du plein écran. Je recommande PDCurses (assez simple et portable).



              Intéressant, merci de cette info. J'ai l'impression que cette bibliothèque gère les évènements du clavier et de la souris, la couleur, l'effacement de l'écran, le temps en ms (?). Ça peut faire une bonne alternative à la SDL dans certains cas. Mon idée de base étant que pour écrire certains programmes graphiques en mode le plus portable possible, il vaut mieux pousser le plus loin possible la programmation du même programme en mode console et seulement en phase ultime adapter le programme aux possibilités de la bibliothèque graphique qu'on utilise (je ne suis pas sûr que je me fais bien comprendre).
              • Partager sur Facebook
              • Partager sur Twitter
                5 octobre 2007 à 13:44:25

                Citation : candide

                (je ne suis pas sûr que je me fais bien comprendre).


                Moi, j'ai compris et je suis d'accord...

                http://mapage.noos.fr/emdel/snake.htm
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  5 octobre 2007 à 15:00:51

                  Citation : -ed-


                  http://mapage.noos.fr/emdel/snake.htm



                  Oui, je faisais allusion entre autres à cette réalisation mais aussi à d'autres projets sur lesquels je me penche actuellement ou me pencherai un jour ou l'autre.

                  Concernant ton snake, je t'avoue ne pas avoir compris tout de suite
                  • comment il était possible de réaliser un tel jeu et avec un minimum de réalisme graphique
                  • ce que pouvait bien signifier "portable" pour un snake (la notion de console, de touches du clavier ou d'écran n'est pas portable, un temps mesuré en ms n'est pas portable, enfin je veux dire que tout ceci n'est pas spécifié dans le standard du C).

                  À vrai dire, même encore maintenant tout n'est pas clair dans mon esprit. En regardant les fichiers que tu présentes ici : http://mapage.noos.fr/emdel/snake/codg.htm, je crois comprendre que la seule fonction non standard permettant de réaliser ton jeu en console est une fonction du type de ta macro msleep(). Et rien d'autre, par exemple comment rafraîchit-on l'écran (1) ?

                  Sinon, concernant la conception du jeu lui-même, certains trouveront cela artificiel, mais j'irais encore plus dans l'abstraction, un jeu comme un snake n'étant après tout qu'un automate : l'état du jeu est une fonction de l'état précédent, de l'instant courant et des événements courants. Imaginons qu'on veuille par exemple faire le code C le plus factorisé possible pour que le jeu tourne en mode console, avec la SDL ou sur une TI89 ou encore une Casio graph 85 : il faut bien rendre le fonctionnement du jeu très abstrait et uniquement en fin de codage, faire intervenir les possibilités graphiques de telle ou telle bibliothèque adaptée au matériel (j'exclus un usage massif de directives de compilation conditionnelle, je trouve ça très peu lisible et je ne sais pas si c'est maintenable). Concrètement, pour moi cela veut dire que l'écran ou le clavier sont d'abord complètement virtuels, c'est-à-dire des abstractions.

                  Il n'en reste pas moins que je trouve ton idée de projet très intéressante, surtout qu'en minimisant le rôle de la bibliothèque externe, l'apprenti-programmeur (comme moi par exemple) peut se concentrer sur le codage en C de l'algorithme de jeu. Parce que finalement, ça prend pas mal de temps de bien comprendre comment on utilise une bibliothèque graphique comme la SDL, c'est seulement maintenant après quelques mois que je commence à être plus à l'aise.


                  (1) OK, je viens de voir, on a en fait besoin d'une bibliothèque genre conio.


                  EDIT : coquilles
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 octobre 2007 à 16:47:51

                    Citation : candide

                    (1) OK, je viens de voir, on a en fait besoin d'une bibliothèque genre conio.


                    Ou PDCurses. J'ai montré les 2 façons de faire.

                    http://mapage.noos.fr/emdel/snake/02/scr.c

                    Au fait, il ne faut pas confondre standard et portable. Il y a des tas de choses non standards qui sont portables, heureusement. (et il y a des choses standards qui ne sont pas portables !)

                    http://mapage.noos.fr/emdel/notes.htm#standard
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      8 octobre 2007 à 1:35:26

                      Citation : -ed-

                      Citation : candide

                      (1) OK, je viens de voir, on a en fait besoin d'une bibliothèque genre conio.


                      Ou PDCurses.



                      Ncurses pour Linux.

                      Petites questions au cas où je voudrais porter un programme SDL sous la console :

                      on gère les événements du clavier comme avec la SDL (une file d'attente et une fonction non blocante de sondage de la file) ? Et la console est vue comme une zone de pixels ?

                      Merci
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 octobre 2007 à 11:58:41

                        Citation : candide

                        Petites questions au cas où je voudrais porter un programme SDL sous la console :

                        Gné ? C'est pas possible. La console, c'est du mode texte, et il n'y a pas d'évènements (du moins en mode *curses).
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          8 octobre 2007 à 13:37:21

                          Citation : -ed-

                          Citation : candide

                          Petites questions au cas où je voudrais porter un programme SDL sous la console :

                          Gné ? C'est pas possible. La console, c'est du mode texte, et il n'y a pas d'évènements (du moins en mode *curses).


                          mode texte certes mais pas de pixel donc ? juste accès à des numéros de lignes et des numéros de colonnes, c'est ça ?

                          Et si tu dis qu'on peut faire un snake en console, on doit bien pouvoir capturer les événements du clavier pour déplacer le snake ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 octobre 2007 à 13:45:25

                            oui, on peut attraper... je ne dirais pas vraiment "evenements", je dirais que tu peux savoir si une touche est pressée, et, si c'est le cas, la lire.

                            Par exemple, sous Windows, tu as conio, qui a été épuré depuis MSDOS, mais qui te permet toujours de voir si une touche a été pressée (avec _kbhit() ) et de la lire si c'est le cas : (avec getch() ).

                            Pour un snake, tu auras aussi besoin d'une fonction qui poses le curseur a une position x,y donnée. Sous Windows, tu as des fonctions de la WINAPI qui font ça : cf mon tuto (cf ma signature) §B.3.

                            Sinon, il existe aussi des librairies portables comme spécifiées plus haut.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                              8 octobre 2007 à 13:50:17

                              Citation : candide

                              mode texte certes mais pas de pixel donc ? juste accès à des numéros de lignes et des numéros de colonnes, c'est ça ?

                              Et si tu dis qu'on peut faire un snake en console, on doit bien pouvoir capturer les événements du clavier pour déplacer le snake ?


                              J'ai publié le code. Tu ne l'as pas lu ? Pas compris ?

                              http://mapage.noos.fr/emdel/snake.htm
                              http://mapage.noos.fr/emdel/snake/02/kbd.c
                              http://mapage.noos.fr/emdel/snake/02/scr.c
                              etc.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                8 octobre 2007 à 16:56:43

                                Citation : -ed-


                                J'ai publié le code.


                                Pas si clair, ici, il y a bien le fichier kbd.c mais il était vide encore hier soir, visiblement tu as placé le code récemment. Donc, non, je ne l'ai pas lu et de toute façon ce n'était pas pas ma question. Fvirtmann y a répondu pour l'essentiel et je l'en remercie.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 octobre 2007 à 17:49:30

                                  Citation : candide

                                  Citation : -ed-


                                  J'ai publié le code.


                                  Pas si clair, ici, il y a bien le fichier kbd.c mais il était vide encore hier soir, visiblement tu as placé le code récemment.


                                  Bah, les fichiers du répertoire .../snake/02/ sont datés des 17 et 18 aout 2007... La date est mise par le serveur quand il reçoit le fichier. Aucune triche possible... Problème de cache ou de proxy...


                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !

                                  ecrire du texte dans la console

                                  × 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