Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Image non affichée (fenetre ok)

Segmentation Fault

    13 avril 2006 à 22:09:06

    Salut, j'aimerai savoir ou est ce que je me suis trompé, j'aimerai afficher 3 images (objet), j'ai volontairement enlever des lignes de code car elles sont bonnes ;) et mon test d'event ne touche pas a objet

    int main(int argc, char *argv[]){
        SDL_Surface *screen = NULL, *objet=NULL;
        SDL_Event event;
        int i=0;
        SDL_Rect positionobjet[3];
        srand(time(NULL));
    /* blabla classique*/
        objet = IMG_Load("img/meteore.png");
        for(i=0;i<3;i++){
            positionobjet[i].x=rand()%LARGEUR;
            positionobjet[i].y=rand()%HAUTEUR;
        SDL_BlitSurface(objet, NULL, screen, &positionobjet[i]);}
        SDL_FreeSurface(objet);
        SDL_Quit();
        return EXIT_SUCCESS;
    }


    et j'ai cette erreur :

    Citation : stderr

    Fatal signal: Segmentation Fault (SDL Parachute Deployed)


    L'erreur visible est la suivante : l'image ne s'affiche pas pourtant l'adresse est bonne.

    Si vous pensez qu'il vous fait la gestion des evenements dites le :)

    Merci encore.
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2006 à 22:34:03

      Je ne vois aucune erreur sur ce bout de code, donne tout.
      • Partager sur Facebook
      • Partager sur Twitter

      If you'd like to join us, read "How do we work at OpenClassrooms"! :)

        13 avril 2006 à 23:24:41

        Le parachute de la SDL :lol: se deploie parfois lorsque l'image qu'on charge n'est pas là !
        J'ai déja fait cette erreur.. verifie ! :)
        • Partager sur Facebook
        • Partager sur Twitter
          14 avril 2006 à 21:30:56

          Voila le main

          int main(int argc, char *argv[]){
              SDL_Surface *screen = NULL, *fond = NULL, *perso = NULL, *objet=NULL;
              SDL_Event event;
              int continuation = 1,i=0;
              SDL_Rect positionfond, positionperso, positionobjet[3];
              srand(time(NULL));
              /* ************************************ */
              SDL_Init(SDL_INIT_VIDEO);
              screen = SDL_SetVideoMode(LARGEUR, HAUTEUR, 32, SDL_HWSURFACE | SDL_DOUBLEBUF );
              test_chargement(screen);
              SDL_WM_SetCaption("Spatial Shoot alpha RC 0.1", NULL);
              /* ************************************ */
              fond  = IMG_Load("img/fond.png");
              test_chargement(fond);
              perso = IMG_Load("img/perso.png");
              test_chargement(perso);
              objet = IMG_Load("img/meteore.png");
              test_chargement(objet);
              positionfond.x  = 0;
              positionfond.y  = 0;
              positionperso.x = screen->w / 2 - perso->w / 2;
              positionperso.y = screen->h / 2 - perso->h / 2;
              for(i=0;i<3;i++){
                  positionobjet[i].x=rand()%LARGEUR;
                  positionobjet[i].y=rand()%HAUTEUR;
              SDL_BlitSurface(objet, NULL, screen, &positionobjet[i]);}
              SDL_BlitSurface(fond, NULL, screen, &positionfond);
              SDL_BlitSurface(perso, NULL, screen, &positionperso);
              SDL_EnableKeyRepeat(10, 10);
              SDL_ShowCursor(SDL_DISABLE);

            event_all(&continuation,event,screen,perso,fond,objet,&positionperso,&positionfond,positionobjet);
              /* ************************************ */
              SDL_FreeSurface(fond);
              SDL_FreeSurface(perso);
              SDL_FreeSurface(objet);
              SDL_Quit();
              return EXIT_SUCCESS;
          }


          La fonction d'event

          void event_all(int *continuation,SDL_Event event,SDL_Surface *screen,SDL_Surface *perso,SDL_Surface *fond,SDL_Surface *objet,SDL_Rect *positionperso,SDL_Rect *positionfond,SDL_Rect positionobjet[])
          {
              /*int i=0;*/
              SDL_Surface *tir=NULL, *perso_haut=NULL, *perso_bas=NULL, *perso_gauche=NULL, *perso_droite=NULL;
              tir          = IMG_Load("img/tir.png");
              perso_droite = perso;
              perso_haut   = IMG_Load("img/perso_haut.png");
              perso_bas    = IMG_Load("img/perso_bas.png");
              perso_gauche = IMG_Load("img/perso_gauche.png");
              SDL_Rect positiontir;
              positiontir.x=(*positionperso).x +65;
              positiontir.y=(*positionperso).y +33;
              test_chargement(tir);
              while (*continuation)
              {
                  SDL_WaitEvent(&event);
                  switch(event.type)
                  {
                      case SDL_QUIT:
                          *continuation = 0;
                          break;
                      case SDL_KEYDOWN:
                          switch(event.key.keysym.sym)
                          {
                              case SDLK_a:
                                  *continuation = 0;
                                  break;
                              case SDLK_ESCAPE:
                                  *continuation = 0;
                                  break;
                              case SDLK_UP:
                                  tir=IMG_Load("img/tir_haut.png");
                                  perso=perso_haut;
                                  (*positionperso).y-=10;
                                  break;
                              case SDLK_DOWN:
                                  tir=IMG_Load("img/tir_haut.png");
                                  perso=perso_bas;
                                  (*positionperso).y+=10;
                                  break;
                              case SDLK_RIGHT:
                                  tir=IMG_Load("img/tir.png");
                                  perso=perso_droite;
                                  (*positionperso).x+=10;
                                  break;
                              case SDLK_LEFT:
                                  tir=IMG_Load("img/tir.png");
                                  perso=perso_gauche;
                                  (*positionperso).x-=10;
                                  break;
                              case SDLK_SPACE:
                                  ftir(perso,perso_droite,perso_gauche,perso_haut,perso_bas,screen,tir,&positiontir,positionperso);
                                  break;
                              default:
                                  break;
                          }
                          break;
                      case SDL_MOUSEBUTTONDOWN:
                          switch(event.button.button)
                          {
                              case SDL_BUTTON_LEFT:
                                  ftir(perso,perso_droite,perso_gauche,perso_haut,perso_bas,screen,tir,&positiontir,positionperso);
                                  break;
                              default:
                                  break;
                          }
                          break;
                      default:
                          break;
                  }
                  /*move_obj(positionobjet);*/
                  test_position(positionperso);
                  /*for(i=0;i<3;i++){
                  SDL_BlitSurface(objet, NULL, screen, &positionobjet[i]);}*/

                  SDL_BlitSurface(fond,  NULL, screen, positionfond);
                  SDL_BlitSurface(perso, NULL, screen, positionperso);
                  SDL_Flip(screen);
              }
              SDL_FreeSurface(tir);
              SDL_FreeSurface(perso_haut);
              SDL_FreeSurface(perso_bas);
              SDL_FreeSurface(perso_gauche);
              SDL_FreeSurface(perso_droite);
          }


          ftir marchait avant sans probleme je n'ai rien touché. et test_position aussi
          • Partager sur Facebook
          • Partager sur Twitter

          [C] Image non affichée (fenetre ok)

          × 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