Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit probleme avec les events sdl

test d'un programme

    28 avril 2006 à 16:28:22

    salut j ai fait un ti programme en sdl il affiche la carte du premier zelda (NES) et un rectangle pour naviguer dessus

    il sert a rien mais c'est pour m'exercer malheureusement il se compile bien mais plante si vous pouviez regarder et me donner un indice sur le probleme car ca fait 1h que je cherche

    merci d'avance

    Source
    je n ai pas fait un copier coller de mes sources car elles sont assez grandes et en plus il y a pas mal d'images et comme je sais pas où est la ou les fautes.

    au fait je sait que j aurai du faire des tableaux mais bon une fois partie j ai decide de finir comme ca
    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2006 à 17:08:32

      Chez moi il compile et fonctionne (je suis sous Fedora Core 5), mis à part le fait que tu as oublié de mettre SDL_WaitEvent avant le switch qui gère les évènements. Et le carré ne se déplace pas, je vais voir d'où vient le problème et je reposte.

      EDIT : ça est ça fonctionne, tu avais oublié de blitter la surface :
      SDL_BlitSurface(surface, NULL, ecran, &positionActuelle);

      Et ta fonction déplacer était incorrecte. Correction :
      void deplacer(int direction, SDL_Rect  *pos)
      {
         switch(direction)
          {
              case HAUT:
                  if (pos->y - 1 < 0)
                      break;
                  pos->y--;
                  break;

              case BAS:
                  if (pos->y + 1 > NB_BLOCS_HAUTEUR * (hauteur - 1))
                      break;
                  pos->y++;
                  break;

              case DROITE:
                  if (pos->y + 1 > NB_BLOCS_LARGEUR * (largeur - 1))
                      break;
                  pos->x++;
                  break;

              case GAUCHE:
                  if (pos->y - 1 < 0)
                      break;
                  pos->x--;
                  break;
          }
      }
      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2006 à 17:17:27

        Tu charges 16*8 = 128 grandes images png. a mon avis, tu surcharges trop ta ram.
        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2006 à 17:20:19

          bizar moi ca fonctionne pas ca affiche la carte avec le rectangle noir transparent puis plantage du programme

          et dans mon code j ai blitte surface (tout a la fin avant de lrafraichir l ecran et de libere)


          je sais crown mais ca devrait pas poser de probleme aux dernieres cartes graphiques quand même ^^
          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2006 à 17:23:43

            Citation : spygon

            bizar moi ca fonctionne pas ca affiche la carte avec le rectangle noir transparent puis plantage du programme

            et dans mon code j ai blitte surface (tout a la fin avant de lrafraichir l ecran et de libere)


            je sais crown mais ca devrait pas poser de probleme aux dernieres cartes graphiques quand même ^^



            Ah oui effectivement, j'avais pas vu. Sinon effectivement le plantage doit venir du nombre énorme d'image chargées en mémoire. Chez moi ça marche surement grâce à la bonne gestion de la RAM par le noyau Linux, mais sous Windows, bonjour les dégâts !
            • Partager sur Facebook
            • Partager sur Twitter
              28 avril 2006 à 17:26:06

              j ai une geforce FX 5900 128 Mo de ram et 1,5 GO DDR 3200 je pense pas que ca soit ca le probleme si?

              edit:
              c bon j avais oublie pas vu "SDL_WaitEvent" le nul lol

              par compte mon deplacement ne fait pas ce que je voulais c pas grave vais remanie tous ca
              • Partager sur Facebook
              • Partager sur Twitter
                28 avril 2006 à 20:52:17

                Citation : spygon

                j ai une geforce FX 5900 128 Mo de ram et 1,5 GO DDR 3200 je pense pas que ca soit ca le probleme si?

                edit:
                c bon j avais oublie pas vu "SDL_WaitEvent" le nul lol

                par compte mon deplacement ne fait pas ce que je voulais c pas grave vais remanie tous ca



                en effet, de plus les png sont legers, ca devrait aller. par contre, si ça avait été des bmp, il y aurait eu de quoi s'inquiéter pour certaines CG.

                Citation : autre


                Chez moi ça marche surement grâce à la bonne gestion de la RAM par le noyau Linux, mais sous Windows, bonjour les dégâts !



                je pense pas que la gestion de la ram soit ce que windows fait de pire, et de surcroit qu'il y ait une réelle différence entre les deux ;) .
                • Partager sur Facebook
                • Partager sur Twitter
                  28 avril 2006 à 20:53:30

                  if (pos->y + hauteur > (NB_BLOCS_HAUTEUR * hauteur )-1))

                  pourquoi ca c'est pareil que

                  if (pos->y + hauteur > NB_BLOCS_HAUTEUR * (hauteur - 1))

                  je comprends pas c'est pas logique mathematiquement parlant
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2006 à 21:19:03

                    C'est pas du tout judicieux ton système de maps : comme dit précédement, tu te surcharge complètement la ram à charger une map complète en mémoire.
                    Tu devrais créer un système de tilemaps (représenter tes cartes sous forme de blocs de 16*16 pixels ou 32*32 pixels par exemple) :

                    Tu reprèsente ta carte dans un fichier qui représente les blocs de ta carte et tu affiche les blocs correspondants :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 avril 2006 à 21:41:20

                      je sais c'etait juste pour m exercer je suis entrain de refaire le premier zelda et j'utilise pas du tout ce systeme
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 avril 2006 à 21:49:39

                        Citation : spygon

                        je sais c'etait juste pour m exercer je suis entrain de refaire le premier zelda


                        rien que ça :D .
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 avril 2006 à 22:17:41

                          bah j'aime bien les defis

                          justement si vous savez où prendre le ssprites des decors (arbres, rochers etc)
                          je parle de the legend of zelda sur NES
                          merci d avance
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Petit probleme avec les events 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