Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec la SDL

ereur de segmentation

    29 novembre 2008 à 11:07:03

    Salut tout le monde !
    Je me suis mis à la SDL il n'y a pas longtemps grace aux tutos en ligne.
    Après avoir terminer la partie qui expliquait comment traîter les evènements je me suis dis que je pourrais essayer de coder un petit jeu pour m'entraîner.
    Mais voila, a peine ai-je voulu compiler une petite partie de ce code, rien ne ce passe.
    J'ai essayer de debugger le projet et ça m'affiche "Une violation d'accès(Ereur de segmentation) est apparu dans votre programme".
    Pourtant j'ai bien copier/coller ce qu'il fallait pour linker, j'ai mis la dll dans mon fichier.
    Voici mon code complet, peut être vous parlera t-il plus.

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    
     
    int main(int argc, char *argv[])
    {
       SDL_Surface *ecran = NULL, *player1 = NULL, *player2 =NULL;
       
       SDL_Rect positionPlayer1, positionPlayer2;
       positionPlayer1.x = 50;
       positionPlayer1.y = 320;
       
       positionPlayer2.x = 320;
       positionPlayer2.y = 50;
       
       SDL_Init(SDL_INIT_VIDEO);
       SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
       
       ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE| SDL_DOUBLEBUF); 
    
       SDL_FillRect(player1, NULL, SDL_MapRGB(ecran->format, 150, 150, 150));
       SDL_BlitSurface(player1, NULL, ecran, &positionPlayer1);
       
        SDL_FillRect(player2, NULL, SDL_MapRGB(ecran->format, 150, 150, 150));
       SDL_BlitSurface(player2, NULL, ecran, &positionPlayer2);
       
       
       
       
       SDL_Flip(ecran);
       SDL_FreeSurface(player1);
       SDL_FreeSurface(player2);
       
       
       
       SDL_Quit();
        return EXIT_SUCCESS;
    }
    


    Pouvez vous m'indiquer mon ereur ?
    Merci d'avance à tous :) .
    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2008 à 13:20:16

      Salut,

      Ton erreur est on ne peux plus simple.
      SDL_Init(SDL_INIT_VIDEO);
      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
         
      ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE| SDL_DOUBLEBUF);
      

      Ta 2eme ligne te permet de tracer un rectangle de couleur blanc sur ta surface ecran.
      Le probleme c'est que tu utilise ecran avant son initialiation.
      Ce qui te cause donc une erreur de segmentation.

      Voici ce qu'il faut faire :
      SDL_Init(SDL_INIT_VIDEO);
      ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE| SDL_DOUBLEBUF); 
      
      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
      

      Ici tu initialise ta surface ecran et ensuite tu peux l'utiliser simplement.

      Bonne continuation ;)
      • Partager sur Facebook
      • Partager sur Twitter

      Problème avec la SDL

      × 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