Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modification de couleur avec une touche

juste une question

Anonyme
    11 avril 2006 à 21:39:23

    Salut tout le monde ! Voila, j'ai une question : j'ai réussi le TP de M@t qui consiste à modifier la couleur en appuyant sur Haut ou Bas, mais est-il possible de "bloquer" la couleur ? C'est a dire qu'un fois arrivé a blanc, meme si j'appuis sur Haut, la couleur ne change plus (pareil pour le noir ^^ ). Parceque moi quand j'appui un peu trop une fois que j'ai le blanc, je re passe au noir et une fois que je suis au noir et que j'appuis sur Bas, baaa je (re)passe au blanc :-° Et c'est pas cool :colere: Donc si quelqu'un peut me donner une 'tite astuce pour empêcher ça, je suis preneur ^^ Merci d'avance !

    PS : J'ai failli oublier mon code :lol: *mode boulet [ON] OFF* :D

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

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *zozor = NULL;
        SDL_Rect positionZozor;
        SDL_Event event;
        int continuer = 1;
        char color = 0;

        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("Gestion des couleurs", NULL);

        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_UP: // Flèche haut
                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                            color++;
                            break;
                        case SDLK_DOWN: // Flèche bas
                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                            color--;
                            break;

                    }
                    break;
            }


            SDL_Flip(ecran); /* On met à jour l'affichage */
        }

        SDL_Quit();

        return EXIT_SUCCESS;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2006 à 21:47:00

      C'est très facile ;)

      Il suffit de tester si color est:
      -Superieur à 0 quand on descent >> Si oui, on descent
      -Inferieur à 255 quand on augmente. >> Si oui, on augmente

      Ce qui donne:
      #include <stdlib.h>
      #include <stdio.h>
      #include <SDL/SDL.h>

      int main(int argc, char *argv[])
      {
          SDL_Surface *ecran = NULL, *zozor = NULL;
          SDL_Rect positionZozor;
          SDL_Event event;
          int continuer = 1;
          char color = 0;

          SDL_Init(SDL_INIT_VIDEO);

          ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
          SDL_WM_SetCaption("Gestion des couleurs", NULL);

          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_UP: // Flèche haut
                              SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                              if(color < 255) color++;
                              break;
                          case SDLK_DOWN: // Flèche bas
                              SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                              if(color > 0) color--;
                              break;

                      }
                      break;
              }


              SDL_Flip(ecran); /* On met à jour l'affichage */
          }

          SDL_Quit();

          return EXIT_SUCCESS;
      }

      Tout simplement ^^
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        11 avril 2006 à 21:51:47

        Oulala, mais des fois j'me demande si je suis pas un 'tit peu con quand meme ! J'te jure la réponse et d'une simplicité (mais bon c'est normal vu qu'on me la donne, c'est moins évident quand on réfléchit :-° ) Bon ba merci d'avoir aidé un boulet en détresse :lol: Bye !

        Edit : euuu la ya un blem o_O Le code marche qu'a moitié : impossible de passer du noir au blanc (la couleur est bien bloquée) mais je passe du blanc au noir sans probleme ! Comme s'il ne prenait pas ma ligne en compte

        if(color > 0) color--;


        Quelqu'un peut-il m'expliquer pourquoi ?
        • Partager sur Facebook
        • Partager sur Twitter
          12 avril 2006 à 13:52:42

          Bizarre ! Mystere et boule de C !

          Essaye de mettre des crochets aprés la condition:
          if(color > 0)
          {
               color--;
          }

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 avril 2006 à 16:51:35

            Et non, meme comme ça, sa marche pas !! Mystere, mystere !
            • Partager sur Facebook
            • Partager sur Twitter
              12 avril 2006 à 17:00:19

              C'est bizarre..ça marche dnas un sens et pas dans l'autre ?

              Dev-C++ ?
              Mystere ! :lol:
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                12 avril 2006 à 17:23:50

                Mystere mais chiant ! Parce que bon c'est un peu chiant de pas réussir a finir un log sans qu'il y ait d'erreur :-°
                • Partager sur Facebook
                • Partager sur Twitter

                Modification de couleur avec une touche

                × 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