Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] ouvrir une console

dans un programme SDL

Sujet résolu
    30 mai 2006 à 21:39:31

    Bonjour, je voudrais créer un programme en SDL qui, si on appuie sur la barre d'espace, affiche un texte dans une nouvelle fenêtre de type console.
    C'est un programme tout simple mais je sais pas ouvrir une console à partir d'un programme utilisant SDL.

    Voici le listing pour le moment :

    /*
    appelConsole.c

    Créé le 30.05.06
    Par KaphiSo

    role : appeler une console à partir d'un programme SDL
    */


    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_ttf.h>

    void afficherTexte();

    int main(int argc, char *argv[])
    {
       SDL_Surface *ecran=NULL, *message=NULL;
       SDL_Event event;
       SDL_Rect positionMessage;
       SDL_Color couleurMessage={0,0,0};
       TTF_Font *police=NULL;
       int continuer=1;
       
       /* initialisation */
       SDL_Init(SDL_INIT_VIDEO);
       TTF_Init();
       
       /* Chargement de ecran */
       ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
       SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format, 255, 255, 255));
       SDL_WM_SetCaption("Test appel fenetre console",NULL);
       
       
       /* Chargement de la font */
       police = TTF_OpenFont("Ayuma2yk.ttf", 25);
       message = TTF_RenderText_Blended(police, "Appuyer sur la barre d'espace pour ouvrir une fenetre console", couleurMessage);
       positionMessage.x = 50;
       positionMessage.y = 240;
       
       /* evennement */
       while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYDOWN:
                     switch(event.key.keysym.sym)
                     {
                         case SDLK_SPACE:
                              afficherTexte(); /* IL FAUDRAIT OUVRIR */
                              break;           /* LA CONSOLE ICI */
                     }
                     break;
           
            }
           
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
            SDL_BlitSurface(message,NULL,ecran,&positionMessage);
            SDL_Flip(ecran);
        }
       
        TTF_CloseFont(police);
        SDL_Quit();
       
    }
       

    void afficherTexte()
    {
         int duree, i;
           
         printf("Texte sur une nouvelle fenetre console !\n");
         
         /* tempo */
         for(duree=50000;duree>0;duree--)
            for(i=9090;i>0;i--);
    }
       


    Voila. On devrait pouvoir voir dans la console le texte qui est dans la fonction afficherTexte()

    Note : La tempo permet de fermer la console au bout d'un petit moment, toute seule.

    Quelqu'un pourrait-il m'aider?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      30 mai 2006 à 21:43:05

      On ne peut pas. C'est Console OU SDL.
      • Partager sur Facebook
      • Partager sur Twitter
        30 mai 2006 à 21:49:55

        RAAA :(:(:( Zut!
        c'est bien ce qu'il me semblais vu que l'on doit configurer le projet avec Win32 GUI (sous Dev-C++)... :(

        Bon c'est pas grave...

        Merci quand même
        • Partager sur Facebook
        • Partager sur Twitter
          30 mai 2006 à 22:25:05

          Résolu ?
          Sinon, c'est possible, mais pas portable... faut voir du côté de l'API win.
          Un ShellExecute() sur "cmd.exe" ou un truc du genre...
          • Partager sur Facebook
          • Partager sur Twitter
            30 mai 2006 à 23:11:53

            Je connais un logiciel qui ouvre uune fenêtre et une console, et que si on ferme la console, la fenêtre se ferme aussi : Blender 3D.
            • Partager sur Facebook
            • Partager sur Twitter
              30 mai 2006 à 23:15:15

              Je crois qu'avec linux c'est possible, mais je ne suis pas sur. Autant vous faites comme si j'avais rien dit. :)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                31 mai 2006 à 11:34:33

                SDL_console? C'est une sous lib de la SDL
                Sinon blender est codé en C, C++ et Python, donc...
                Ben avec linux, la console est toujours en arrière plan donc... sous windows ce qu'on écrit est affiché dans stdout.txt
                • Partager sur Facebook
                • Partager sur Twitter
                  31 mai 2006 à 12:14:10

                  Ok donc si je comprend bien, ce n'est pas possible si je veux coder qu'en C...
                  Sinon, je crois que le jeu DOOM 2 charge d'abord une console puis le plein-écran mais je sais pas quel langage a été utilisé pour le programmer...
                  Et de toute façon, c'est très vieux comme jeu. Je pense pas que ça soit du C :p
                  Et merci pour ces quelques précisions.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 mai 2006 à 12:20:57

                    pour avoir la console, suffit de faire un projet console et non win32, et à ce moment les messages s'afficheront dans la console et non dans stdout.txt
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 mai 2006 à 13:50:16

                      Ba oui mais c'est un projet SDL qu'il fait.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        31 mai 2006 à 13:51:20

                        Ben oui, mais si tu met pas en mode GUI, la fenêtre SDL s'affiche mais la console reste derrière donc c'est bon!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 mai 2006 à 13:52:45

                          A ok. Je ne savait pas que le mode GUI n'etait pas obligatoire pour utiliser la SDL (fenetre).
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [SDL] ouvrir une 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