Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] + [SDL] Pb de structure et de pointeur

Sujet résolu
    14 mai 2006 à 11:40:27

    Bonjours j'essay de créé un petit programme mais : voici mon problème :
    je voudrais faire une fonction qui cherche a l'aide de 2 boucle for un chiffre dans une tableau de int et qui renvoi a laide des pointeurs la position dans un SDL_Rect voila le code

    main.c

    #include "fonction.h"

    int main(int argc, char *argv[])
    {
        //DECLARATION DES VARIABLES
            SDL_Surface *ecran = NULL, *perso = NULL;
            SDL_Event event;
            SDL_Rect scr[4], pos, act;
            int continuer = 1, carte[CAS][CAS] = {0};       
        //INITIALISATION
            if (SDL_Init(SDL_INIT_VIDEO) == -1)
            {
               fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError());
               exit(EXIT_FAILURE);
            }
            SDL_WM_SetCaption("Sokoban", NULL);   
            sprit(&scr[HAUT], &scr[BAS], &scr[GAUCHE], &scr[DROITE]);
        //MODE VIDEO
            ecran = SDL_SetVideoMode(DIM, DIM, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
            if (ecran == NULL)
            {
                fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
                exit(EXIT_FAILURE);
            }
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        //CHARGEMENT
            carte[0][0] = 1;
            act = scr[BAS];
            perso = SDL_LoadBMP("perso.bmp");
            SDL_SetColorKey(perso, SDL_SRCCOLORKEY,
            SDL_MapRGB(perso->format, 255, 0, 255));
            position(carte, &pos);
            SDL_BlitSurface(perso, &act, ecran, &pos);
        //BOUCLE
            while(continuer)
            {
           
                 SDL_WaitEvent(&event);
                 switch(event.type)
                 {
                       case SDL_QUIT:
                            continuer = 0;
                       break;
                 }
            }
            SDL_Quit();
            SDL_FreeSurface(perso);
            return EXIT_SUCCESS;
    }


    fonction.h

    #ifndef DEF_CONSTANTES
    #define DEF_CONSTANTES
      #include <stdlib.h>
      #include <stdio.h>
      #include <SDL/SDL.h>
      #define DIM 680
      #define CAS 20
      enum{HAUT, BAS, GAUCHE, DROITE};
      void sprit(SDL_Rect *haut,SDL_Rect *bas,SDL_Rect *gauche,SDL_Rect *droite);
      void position(int carte[][CAS],SDL_Rect *pos);
    #endif




    fonction.c
    #include "fonction.h"

    void sprit(SDL_Rect *haut,SDL_Rect *bas,SDL_Rect *gauche,SDL_Rect *droite)
    {
            haut->x = 0;
            haut->y = 0;
            haut->w = 34;           
            haut->h = 34;
            bas->x = 0;
            bas->y = 34;
            bas->w = 34;
            bas->h = 34;
            droite->x = 0;
            droite->y = 68;
            droite->w = 34;
            droite->h = 34;
            gauche->x = 0;
            gauche->y = 102;
            gauche->w = 32;
            gauche->h = 32;
    }

    void position(int carte[][CAS],SDL_Rect *pos)
    {
            int i, j;
            for(i=0;i<=CAS;i++)
            {
                for(j=0;j<=CAS;j++)
                {
                     if(carte[i][j] == 1)
                     {
                          pos->x = (34 * j);
                          pos->y = (34 * i);
                     }
                }
            }     
    }


    Le problème est dans la fonction "position"
    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2006 à 13:53:22

      L'erreur se manifeste à la compilation ou bien c'est ton programme une fois compilé qui plante ?
      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2006 à 14:22:58

        c'est mon programe une foi compilé qui plante, la compilation se passe très bien

        EDIT

        enfaite j'ai reussi c'était mon algorythme qui allai pas
        • Partager sur Facebook
        • Partager sur Twitter

        [C] + [SDL] Pb de structure et de pointeur

        × 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