Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit Problème

exercice simple

    20 août 2006 à 11:12:12

    bonjour :) je suis à la SDL aux petits exercices en bas et je bug sur le premier exercice :honte: ou on doit faire d'abord le blanc puis on doit aller vers le noir j'ai essayé de modifier mais ça reste toujours du noir vers le blanc


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

    void pause();

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *lignes[256] = {NULL}; // Initialisation des pointeurs ecran et rectangle
        SDL_Rect position; // Initialisation de la position du rectangle
        int i = 256;

        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(256, 200, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("Mon super jeux vidU00E9o SDL !", NULL);

        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

        for (i = 256; i >= 0; i--)
           lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);

        for (i = 0; i <= 256; i++)
        {
            position.x = 0;
            position.y = i;
            SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
            SDL_BlitSurface(lignes[i], NULL, ecran, &position);
        }

        SDL_Flip(ecran); /* Mise à jour de l'écran avec sa nouvelle couleur */
        pause();

        for (i = 256; i >= 0; i--)
            SDL_FreeSurface(lignes[i]);
        SDL_Quit();

        return EXIT_SUCCESS;
    }

    void pause()
    {
        int continuer = 1;
        SDL_Event event;

        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }


    Je ne vois pas la source du problème :euh:
    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2006 à 11:16:48

      Salut,
      Ce serait plus pratique de préciser quelle erreur te renvoie le compilateur pour ceux qui te relisent.

      Dans ton cas il y a une erreur assez simple : tu essaye d'accéder à une case de ton tableau qui n'existe pas dans tes boucles for : tu a créé un tableau de 256 cases, donc de 0 à 255 inclus, et tu essaye d'accéder à la case 256, qui elle n'existe pas.
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2006 à 11:19:44

        ben en fait je ne reçois pas d'erreur mais c'est le dégradé qui ne fonctionnne pas :
        Mon dégradé : Du noir vers le blanc
        Celui que je veux faire : Du blanc vers le noir
        Voilà ce que je veux faire
        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2006 à 13:20:14

          alors effectivement tu a créé un tableau de 255 cases et tu fait tes boucles 256 fois a chaques fois ce sont des strictement inferieurs/superieurs qu'il faut mettre ;)

          sinon pour ton erreur : 0,0,0 c'est noir et 255,255,255 c'est blanc ... donc inverse ta boucle fait plutot
          for(int i=255;i<=0;i--){
          ta boucle
          }
          • Partager sur Facebook
          • Partager sur Twitter

          Petit Problème

          × 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