Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL editeur carte

    5 février 2006 à 12:09:52

    Bonjour tous le monde,

    Donc je voudrai faire un petit editeur de carte tous simple comme dans RPG maker en 2D, je veux faire vraiment un truc simple, le probleme c est que j y arrive pas, j ai mon chipset.bmp avec les carres de 32*32 mais je ne sais pas comment les decoupes pour les mettres dans un tableau.
    Est ce que quelqu un aurait la gentillesse de m aider merci :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 février 2006 à 12:28:54

      La, tu commence trop haut. Commence par te renseigner sur la sdl.
      • Partager sur Facebook
      • Partager sur Twitter
        5 février 2006 à 14:49:10

        je connais un peu le SDL, je l utilise, j arrive a charger des images, a faire des event, la gestion du clavier et de la souris, a afficher du texte et la je voudrais faire un petit editeur de carte tous simple enfin surtout savoir comment recuperer un seul Tile du fichier BMP qui en contient plein sachant que 1Tile fait 32*32.
        • Partager sur Facebook
        • Partager sur Twitter
          5 février 2006 à 14:53:19

          Salut ! J'ai vu un site qui traitait la creation d'un rpg en C avec SDL, ils parlent aussi de l'editeur de carte, il y a les expliquation et le code source, voila le lien Game Creators
          • Partager sur Facebook
          • Partager sur Twitter
            5 février 2006 à 15:02:28

            oui merci mais je l avais deja vu le probleme c est que eux c est un editeur de mal assez developper et je ne comprend pas tous le code c est pas un probleme de difficulte mais surtout d analyse alors j aurai voulu avoir un truc vraiment simple pour comprendre deja la base mais aussinon je passerai du temps sur celui la merci :) .
            y en a un sur : ici aussi.
            Si ca existe pas ce n est pas grave merci vos aide en tous cas :)
            • Partager sur Facebook
            • Partager sur Twitter
              5 février 2006 à 16:05:50

              Ba ça doit pas être très compliqué...

              SDL_BlitSurface(textures,&rect_selection,screen,&rect1);

              textures : Le SDL_Surface qui contient l'image ou il y a tout tes tiles.

              rect_selection : Un rectangle qui sélectionne la zone (le tile que tu veux quoi...) tu lui met rect.h = 32 et rect.y = 32, pour x et y, c'est la position x et y du tile.

              screen : La ou tu colles ton sprite.

              rect1 : L'endroit ou tu le colle.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                5 février 2006 à 16:22:45

                Rmf, je répond trop vite, le control enti-flood a bloquer ma réponse...
                • Partager sur Facebook
                • Partager sur Twitter
                  5 février 2006 à 16:55:09

                  ok je vais essaier cela, je vous tiens au courant merci :)
                  oki ca marche en faites c etait tout con maintenant je vais recherche comment en mettre de partout :p

                  voici le code (assez moche XD) :


                  #include <SDL/SDL.h>
                  #include <iostream>
                  #include "main.h"

                  SDL_Surface *screen;
                  SDL_Surface *image;
                  SDL_Event event; 

                  using namespace std;

                  int main(int argc, char **argv)
                  {
                      Init();
                    image=SDL_LoadBMP("mchip0.bmp");
                    SDL_Rect Rimage1=Rect(0,0,32,32);
                    SDL_Rect Rimage2=Rect(32,0,32,32);
                    SDL_BlitSurface(image,&Rimage2,screen,&Rimage1);
                    SDL_Flip(screen);
                          while(1)       
                          {
                                  while(SDL_PollEvent(&event))       
                                  {
                                          if (event.type == SDL_KEYDOWN) 
                                          {
                                                  if (event.key.keysym.sym == SDLK_ESCAPE) return 0
                                                  if (event.key.keysym.sym == SDLK_s)
                                  {
                                      Rimage1.x = Rimage1.x + 10;
                                      SDL_Delay(1);
                                  }
                                          }
                                  }
                          SDL_FillRect(screen,NULL,0);
                          SDL_BlitSurface(image,&Rimage2,screen,&Rimage1);
                          SDL_Flip(screen);
                          }
                    SDL_Quit();
                    return 0;
                  }

                  void Init()
                  {
                      SDL_Init(SDL_INIT_VIDEO);
                      screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);   
                      SDL_WM_SetCaption("RPG 2D","TEAM THORN");
                  }

                  SDL_Rect Rect(int x,int y,int w,int h)   
                  {
                          SDL_Rect r;
                          r.x=x;
                          r.y=y;
                          r.w=w;
                          r.h=h;
                          return r;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 février 2006 à 19:17:34

                    Bon desole :( mais j ai un petit bug je vous laisse constatez par vous meme :

                    bon j ai reussi mais la j ai un probleme je vois pas du tout d ou ca vient c est vraiment etrange :/ :

                    Au depart, sans rien remplir :
                    Image utilisateur

                    Puis quand je rempli tous :
                    Image utilisateur

                    voici le code :


                    #include <SDL/SDL.h>
                    #include <iostream>
                    #include "main.h"

                    SDL_Surface *screen;
                    SDL_Surface *image;
                    SDL_Event event; 

                    using namespace std;

                    int main(int argc, char **argv)
                    {
                      Init();
                      image=SDL_LoadBMP("mchip0.bmp");
                      SDL_Rect Rimage2=Rect(32,0,32,32);
                      SDL_Rect Rimage1=Rect(0,0,32,32);   
                      SDL_Flip(screen);
                     
                            while(1)       
                            {     
                                    while(SDL_PollEvent(&event))       
                                    {
                                            if (event.type == SDL_KEYDOWN) 
                                            {
                                                    if (event.key.keysym.sym == SDLK_ESCAPE) return 0
                                                    if (event.key.keysym.sym == SDLK_s)
                                    {
                    /******************************REMPLI L ECRAN********************************
                    ****************************DU TILE SELECTIONNE******************************/

                    int i;
                    int j;
                    for(j=0; j<=18; j++)
                    {
                      Rimage1.x = 0-32;             
                      for(i=0; i<=25; i++)
                      {
                          Rimage1.x = Rimage1.x + 32;     
                          SDL_BlitSurface(image,&Rimage2,screen,&Rimage1);
                          SDL_FillRect(screen,&Rimage2,0);
                      }
                      Rimage1.y = Rimage1.y + 32;   
                    }
                    /**************************FIN****************************
                    **********************************************************/
                     
                                    }
                                            }
                                    }
                                    SDL_BlitSurface(image,&Rimage2,screen,&Rimage1);
                            SDL_FillRect(screen,&Rimage2,0);             
                            SDL_Flip(screen);
                            }
                      SDL_Quit();
                      return 0;
                    }

                    void Init()
                    {
                        SDL_Init(SDL_INIT_VIDEO);
                        screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);   
                        SDL_WM_SetCaption("RPG 2D","TEAM THORN");
                    }

                    SDL_Rect Rect(int x,int y,int w,int h)   
                    {
                            SDL_Rect r;
                            r.x=x;
                            r.y=y;
                            r.w=w;
                            r.h=h;
                            return r;
                    }



                    desoler le code est assez moche mais c est pour faire des test :(
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 février 2006 à 19:33:21

                      Ca m'avait fait ça aussi un jour,sur un casse-brique, je crois que c'était un problème de tableaux...

                      Après, faut chercher...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 février 2006 à 19:54:44

                        apparament c est le SDL_Rect qui contient le Tile mais je vois pas pourquoi il veut pas s afficher sur lui meme alors qu il affiche de partout lol
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 février 2006 à 20:10:54

                          Essai de l'afficher or de ton for, juste pour voir.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 février 2006 à 20:26:44

                            il veut pas s afficher, on dirait qu il se met derriere le rectangle noir :/ je vais le trouver le probleme grrrr il m echaperra pas lol
                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 février 2006 à 22:01:58

                              Citation : JC_Master

                              Rmf, je répond trop vite, le control anti-flood a bloquer ma réponse...


                              Je pense qui faudrait surtout que tu te mette à la SDL avant de répondre à des tutos sur la SDL :-°
                              • Partager sur Facebook
                              • Partager sur Twitter
                                6 février 2006 à 22:32:09

                                alors la je desespere lol, on dirait qu il veut pas afficher le tile sur le Rimage1, je vois pas comment faire, quelqu un a une idee svp ? :p
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 février 2006 à 12:39:59

                                  Vérifie les données de Rimage1.

                                  Affiche quelquepart les données du rectangle, de Rimage ect...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    7 février 2006 à 17:09:46

                                    ca va j ai trouver l erreur, c etait vraiment con lool en faites je remplissez a la fin le Rimage2 de noir voila pourquoi ca faisait cela :)
                                    Bon maintenant je fais quelques test et je vais attaquer les offset je pense.

                                    merci en tous cas :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      7 février 2006 à 17:10:53

                                      Bon courage.

                                      (lol c'était vraiment trop con, la prochaine fois, relit 50 fois avant de poster pour un problème ^^)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        7 février 2006 à 20:40:15

                                        Citation : Natim

                                        Citation : JC_Master

                                        Rmf, je répond trop vite, le control anti-flood a bloquer ma réponse...


                                        Je pense qui faudrait surtout que tu te mette à la SDL avant de répondre à des tutos sur la SDL :-°



                                        Je ne te permet pas de me parler comem sa.
                                        Je connais la SDL bien avent le SDZ! J'ai déja fait des aplis graphiques, notament un joly crypteur de texte en c++ qui dans une fenêttre au graphismes déssiner par mes soins a coup de dégrader sous photoshop, on entre le nom du fichier entrent et sortant, et on clic sur le joli texte crypter OU décripter (Ecrit a coup de Biseautage et estempage décolorer) et qui te retourne un fichier ilisible.(Aplication d'une clef de criptage par adition au code ascii de chaque lettre. Un cryptage de sézare vertion informatique ^^). Sauf que j'ai perdu les sources et qu'il me reste que l'executable...
                                        Mon dernier projet, c'était de la SDL avec OpenGL, et il fonctione a la perfection. Si tu ne me croit aps : http://t4cwebserver.free.fr/JDLV_3D.rar/index.php [Et oui je fait aussi du php :p ]

                                        Donc, réfléchit a ce que tu dit avent de parler!
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        SDL editeur carte

                                        × 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