Partage
  • Partager sur Facebook
  • Partager sur Twitter

un scrolling

qui veut pas scroller

Sujet résolu
    8 août 2006 à 20:39:19

    salut les zeros,
    donc avant de poster,j'ai lu des tutos et des posts sur ce et
    d'autres forums.
    je croyais avair tout compris pour faire un scrolling pour un jeu.
    je tape donc au clavier ce que je pense etre juste mais non,ca ne fonctionne pas du tout.le but etait de deplacer un fond noir sur un ecran blanc
    au secours
    int main(int argc, char *argv[])
    {
     SDL_Event event;   
     SDL_Surface *ecran = NULL,*mapPrincipal = NULL;
     int continuer = 1;
     long main = 1;
     
     SDL_Rect positionMap, morceauMap;
    positionMap.x = 0;
    positionMap.y = 0;
    positionMap.w = 400 ;
    positionMap.h = 300;
     SDL_Init(SDL_INIT_VIDEO);

     ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
     mapPrincipal = SDL_CreateRGBSurface(SDL_HWSURFACE,100,100,32,0,0,0,0);

     SDL_EnableKeyRepeat(10, 10);

    while (continuer)
    {   
       
        SDL_WaitEvent(&event);                           
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
            break;
            case SDL_KEYDOWN:
            switch (event.key.keysym.sym)
            {
                        case SDLK_LEFT:
                             positionMap.x--;
                        break;
                        case SDLK_RIGHT:   
                        positionMap.x++;
                        break;
                        case SDLK_UP:                         
                             positionMap.y--;
                        break;
                        case SDLK_DOWN:                         
                             positionMap.y++;
                        break;
            }
             
            break;
           
        }
                SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                SDL_BlitSurface(mapPrincipal, &positionMap, ecran, &morceauMap);
                SDL_Flip(ecran);
               
     
    }
     SDL_FreeSurface (ecran);
     SDL_FreeSurface (mapPrincipal);
     SDL_Quit ();
     return EXIT_SUCCESS;
    }
         

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 août 2006 à 20:46:18

      Salut, j'ais eu un problème de scrolling comme toi .

      Mon problème était tout bête, je n'avais pas fait de :

      SDL_FillRect(mapPrincipal, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));


      aussi, essaye d'initialisé &morceauMap au milieu de l'ecran pour etre Sur ;)
      (morceauMap.x = (LARGEUR_ECRAN / 2) - (positionMap.w / 2);
      ...
      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2006 à 9:36:19

        non decidemment ,ca ne fonctionne toujours pas.
        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2006 à 9:58:39

          Salut,

          je comprend pas trop ce que tu veut faire, pas facile de ce rendre compte du scrolling sur un fond uni, essaye ca:

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


          int main(int argc, char *argv[])
          {
           SDL_Event event;
           SDL_Surface *ecran = NULL,*mapPrincipal = NULL;
           int continuer = 1;
           long main = 1;

           SDL_Rect positionMap, morceauMap;
          positionMap.x = 0;
          positionMap.y = 0;

          morceauMap.x = 0;
          morceauMap.y = 0;
          morceauMap.w = 400;
          morceauMap.h = 300;


           SDL_Init(SDL_INIT_VIDEO);

           ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
           mapPrincipal = SDL_CreateRGBSurface(SDL_HWSURFACE,100,100,32,0,0,0,0);

           SDL_EnableKeyRepeat(10, 10);

          while (continuer)
          {

              SDL_WaitEvent(&event);
              switch(event.type)
              {
                  case SDL_QUIT:
                      continuer = 0;
                  break;
                  case SDL_KEYDOWN:
                  switch (event.key.keysym.sym)
                  {
                              case SDLK_LEFT:
                                   morceauMap.x--;
                              break;
                              case SDLK_RIGHT:
                                  morceauMap.x++;
                              break;
                              case SDLK_UP:
                                   morceauMap.y--;
                              break;
                              case SDLK_DOWN:
                                   morceauMap.y++;
                              break;
                  }

                  break;

              }
                      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                      SDL_BlitSurface(mapPrincipal, &positionMap, ecran, &morceauMap);
                      SDL_Flip(ecran);


          }
           SDL_FreeSurface (ecran);
           SDL_FreeSurface (mapPrincipal);
           SDL_Quit ();
           return EXIT_SUCCESS;
          }
          • Partager sur Facebook
          • Partager sur Twitter

          un scrolling

          × 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