Partage
  • Partager sur Facebook
  • Partager sur Twitter

Images plus grande que l'ecran

    28 mai 2006 à 8:44:28

    Bonjour !

    Voila j'envisage un programme, ou lorsque l'on déplace la souris ou un personnage au bord de l'ecran, le décors doit défiler dans un sens ou dans un autre. Seulement, pour avoir un déplacement fluide du paysage, il faudrait que celui ci soit affiché pixel par pixel. Un truc du genre : je déplace la souris d'1 pixels vers la droite, le paysage se déplace d'un pixel vers la droite... Mais étant donné que cela oblige a afficher le decros pixel par pixel, n'y a t-il pas d'autre solution plus rapide ou plus pratique ? Merci.

    PS : une petite question, qu'est-ce qui est le plus facile a coder : un petit jeux de stratégie en 2D vu de dessus au tour par tour sans IA, ou bien un jeux genre "mario bross" ? (en sachant que mon niveau en programation est celui donné par les cours de M@teo, mais que je suis tres motivé, avec quelques potes...)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 mai 2006 à 9:41:27

      Ben en fait faudrait faire unetrès large image qui couvre ton décor, et ensuite tu ne blittes que les parties qui t'intéressent
      • Partager sur Facebook
      • Partager sur Twitter
        28 mai 2006 à 9:59:17

        Oui, mais j'ai une seule image admettons, qui fait du 2048 x 768.

        Si je la blitte a la position (0,0), j'aurais la partie gauche : OK.

        Mais comment faire pour que ce soit maintenant la partie droite qui apparaisse à l'ecran ? Car j'ai essayé de blitter à (-1024,0) et natturellement ca ne fonctionne pas...
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          28 mai 2006 à 10:02:28

          Tu vois le 2ème paramètre de SDL_BlitSurface? cest un pointeur vers un SDL_Rect, comme le 4ème paramètre, qui contient la postion de ce qu'il faut blitter dans l'image
          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2006 à 10:26:43

            Il y a une solution pour "blitter" l'image dans des coordonnées négatives :
            pos_x = -10
            position_image.x = pos_x;
            SDL_BlitSurface(image, NULL, ecran, &position_image);

            Et l'image ne sera pas "rejetée" à 0.
            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2006 à 14:28:19

              Merci Zulon, mais ta solution ne marche quand largeur d'ecran. (selon x). Je met n'importe quelle valeur d'y et ca blitte tout le temps l'image tout en haut... Je ne comprend pas...
              • Partager sur Facebook
              • Partager sur Twitter
                8 juin 2006 à 10:47:31

                Même comme ca ? :euh:

                int pos_x = -10, pos_y = -10;

                position_image.x = pos_x;
                position_image.y = pos_y;

                SDL_BlitSurface(image, NULL, ecran, &position_image);


                Pour blitter en (-10 ; -10) ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juin 2006 à 12:34:41


                  SDL_Rect position, image; // image est la partie de l'image a blitter

                  position.x = 0;
                  position.y = 0;

                  image.x = 0;
                  image.y = 0;
                  image.w = largeur de la partie a blitter;
                  image.h = hauteur de la partie a blitter;

                  // Tu utilise les evènements pour modifier image.x et image.y selon si tu vas en bas, haut à gauche ou à droite

                  SDL_BlitSurface(image, &image, ecran, &position); // Et enfin, tu blit


                  Et voila!
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Images plus grande que l'ecran

                  × 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