Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] fenetre qui se ferme immédiatement

probleme de pointeur ?

Sujet résolu
    11 décembre 2007 à 17:19:25

    Bonjour à tous
    Je vous explique mon petit probleme.
    Je débute en programmation et principalement en SDL, pour des raisons de facilité, je tente de créer une fonction me permettant d'initialiser tous les modules SDl (SDL, TTF, ... )
    Mais voial le soucis que je rencontre : le fichier le compile, la fenrtre s'ouvre rt se ferme immédiatement.
    Aucune erreur.

    merci de votre aide

    init.cpp
    1. #ifdef __cplusplus
    2.     #include <cstdlib>
    3. #else
    4.     #include <stdlib.h>
    5. #endif
    6. #include <iostream>
    7. #include <string>
    8. #include <SDL/SDL.h>
    9. #include <SDL/SDL_image.h>
    10. #include <SDL/SDL_ttf.h>
    11. #include "prep.h"
    12. bool init(SDL_Surface *ecran) {
    13.     if (SDL_Init(SDL_INIT_VIDEO) == -1)
    14.     {   // initialation SDL video
    15.         printf("Impossible d'initialiser la SDL : %s\n", SDL_GetError());
    16.         return false;
    17.     }
    18.     atexit(SDL_Quit);
    19.     if(TTF_Init() == -1)
    20.     {   // utilisation de SDL ttf
    21.         fprintf(stderr, "Erreur d'initialisation de TTF_Init : %s\n", TTF_GetError());
    22.         return false;
    23.     }
    24.     ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32,
    25.                                            SDL_HWSURFACE|SDL_DOUBLEBUF);
    26.     if (!ecran)
    27.     {
    28.         printf("Impossible de créer un cadre de LARGEUR_FENETRExHAUTEUR_FENETRE: %s\n", SDL_GetError());
    29.         return false;
    30.     }
    31.     printf("OK");
    32.     return true;
    33. }


    init est appelé de cette maniere dans le main()
    1. if(!init(ecran))
    2.         return EXIT_FAILURE;
    • Partager sur Facebook
    • Partager sur Twitter
      11 décembre 2007 à 17:31:53

      Ce n'est pas là que le code plante, donne nous le code de la boucle principale, on verra ce qui fait planter ton programme!
      • Partager sur Facebook
      • Partager sur Twitter

      La maîtrise des fondamentaux est le fondamental de la Maîtrise.

      Anonyme
        11 décembre 2007 à 18:50:23

        c'est le forum de C++ ici, donc plus de fprintf^^
        Sinon pour le reste, je te conseil d'utiliser des std::cerr (a utiliser comme cout) pour écrire dans le fichier stderr.
        Tu place des cerr la ou tu suspecte que le programme plante, et si le message s'affiche dans le fichier texte, alors c'est que le programme vas jusque la.
        C'est une méthode qui ne s'applique que pour des petites programmes, mais le mieux, c'est toujours d'utliser un compilo^^
        • Partager sur Facebook
        • Partager sur Twitter
          12 décembre 2007 à 20:57:42

          Essaye plutôt :

          1. if(!init(&ecran))
          2.     return -1;

          1. bool init(SDL_Surface** ecran)
          2. {
          3.      //....
          4.      *ecran = SDL_SetVideoMode(/*Paramètres*/);
          5.      //....
          6. }
          • Partager sur Facebook
          • Partager sur Twitter
            16 décembre 2007 à 1:02:32

            merci beaucoup gogeta1 ca marche tres bien :)
            • Partager sur Facebook
            • Partager sur Twitter

            [SDL] fenetre qui se ferme immédiatement

            × 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