Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme TRES mystérieux

Aidez-moi j'en peu plus !!

Sujet résolu
Anonyme
    13 avril 2006 à 18:51:14

    Bonjour tout le monde ! Je sais vraiment pas quoi faire !! J'ai montré mon probleme a des potes programmeurs et ils savent pas d'ou vient mon probleme...si seulement quelqu'un savait :( En fait, c'est pour la coloration du fond quand on appuie sur fleche haut ou fleche bas. Je peux appuyer autant que ça me chante sur bas ça restera noir, mais quand je reste trop longtemps sur haut, une fois arrivé au blanc...je repasse au noir !! o_O J'ai tout fais pour empecher cela, j'ai meme créer un bolléen "change" qui ne sert a rien vu que la condition if(color < 255) {color++; } a elle seul devrait empecher mon probleme ! Je suis désepéré je sais plus quoi faire...Aidez moi s'il vous plait :) J'vous fais un sourire... :D Ralala il est bien beau ! V'la mon code :

    #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;
        int change = 1;

        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
                            if(color == 255)
                            {
                                change = 0;
                            }
                            if(color < 255 && change == 1)
                            {
                                color++;
                            }
                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                            break;
                        case SDLK_DOWN: // Flèche bas
                            if(color > 0) color--;
                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                            break;
                        case SDLK_ESCAPE:
                            continuer=0;
                            break;

                    }
                    break;
            }


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

        SDL_Quit();

        return EXIT_SUCCESS;
    }


    Merci d'avance et bonne fin de soirée ^^ Bye !
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2006 à 19:07:33

      int continuer = 1;
          char color = 0;
          int change = 1;
      ?? je regarde ton programme et c'est toujours un nombre(color), quel est l'interet ?
      remplace le par
      int continuer=1,color=0,change=1;


      • Partager sur Facebook
      • Partager sur Twitter
        13 avril 2006 à 19:08:22

        Salut,

        ton probleme est la :


        char color = 0;


        Pour les nombre il faut utiliser un int

        int color = 0;


        Et là le code fonctionne

        A+

        EDIT : arf........trop lent :p
        • Partager sur Facebook
        • Partager sur Twitter
          13 avril 2006 à 19:08:36

          #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
                                  if(color == 255)
                                  {
                                      color--; //la couleur vaut 254
                                  }
                                  if(color < 255 && change == 1)
                                  {
                                      color++;
                                  }
                                  SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                                  break;
                              case SDLK_DOWN: // Flèche bas
                                  if(color > 0) color--;
                                  SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                                  break;
                              case SDLK_ESCAPE:
                                  continuer=0;
                                  break;

                          }
                          break;
                  }


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

              SDL_Quit();

              return EXIT_SUCCESS;
          }



          ca marche mieu :p ?

          demande si tu comprend pas ;)
          • Partager sur Facebook
          • Partager sur Twitter
            13 avril 2006 à 19:14:44

            Enleve zozor ca sert a rien, et voila le code qui marche chez moi :

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

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

                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
                                    if(color == 255)
                                    {
                                        change = 0;
                                    }
                                    if(color < 255 && change == 1)
                                    {
                                        color++;
                                    }
                                    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                                    break;
                                case SDLK_DOWN:
                                    if(color > 0){
                                    color--;
                                    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));}
                                    break;
                                case SDLK_ESCAPE:
                                    continuer=0;
                                    break;
                                default:
                                    break;
                            }
                            break;
                        default:
                            break;
                    }
                    SDL_Flip(ecran);
                }
                SDL_Quit();
                return EXIT_SUCCESS;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              13 avril 2006 à 19:26:55

              je comprend pas a quoi sert le "change"
              • Partager sur Facebook
              • Partager sur Twitter
                13 avril 2006 à 19:36:24

                <citation nom="Sateth">
                int continuer = 1;
                    char color = 0;
                    int change = 1;
                ?? je regarde ton programme et c'est toujours un nombre(color), quel est l'interet ?

                Encore deux qui ont pas tout compris sur les types ^^ les chars sont bien des nombres, sur un octet, et c'est bien ce type de paramètre qui convient le mieux pour un nombre entre 0 et 255, mais en version unsigned. Tu peux aussi utiliser Uint8 qui est défini par SDL.

                Sinon, merci d'utiliser des titres plus explicites à l'avenir, parce que si tout le monde met "J'ai un problème aidez-moi!" je ne vois pas l'intérêt de la présence du titre...


                if(color == 255)
                {
                    change = 0;
                }
                if(color < 255 && change == 1)
                {
                    color++;
                }


                Si tu ne remets pas change à 1, ça marchera pas...
                • Partager sur Facebook
                • Partager sur Twitter
                  13 avril 2006 à 20:28:27

                  Effectivement, ta variable change ne sert à rien ^^

                  Voici un code qui marche:

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

                  int main(int argc, char *argv[])
                  {
                      SDL_Surface *ecran = NULL;
                      SDL_Event event;
                      int continuer = 1;
                      int 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
                                  if (color < 255)
                                  {
                                      color++;
                                  }
                                  SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                                  break;

                                  case SDLK_DOWN: // Flèche bas
                                  if(color > 0)
                                  {
                                      color--;
                                  }
                                  SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, color, color, color));
                                  break;

                                  case SDLK_ESCAPE:
                                  continuer = 0;
                                  break;

                              }
                              break;
                          }

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

                      SDL_Quit();

                      return EXIT_SUCCESS;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    14 avril 2006 à 10:58:18

                    Merci a tous, mais la j'y comprend plus rien...ton code marche Amadeus, mais il se trouve etre mon premier code...qui ne marchait pas ! o_O Enfin bon, c'est de l'informatique, faut pas etre trop éxigeant :D

                    Citation : Amadeus (et beaucoup d'autres)

                    Effectivement, ta variable change ne sert à rien


                    Je l'ai déja dis plus haut, elle n'est pas censé servir vu que le code d'Amadeus (le mien au passage) ne voulait pas fonctionner. Donc j'ai essayer avec ça mais ça ne sert a rien ! La seul différence entre mon code et celui proposé par vous autres, c'est int / char...
                    Vous croyez qu'il est possible que mon programme bugait parce que j'avais mis char color; au lieu de int color; ?

                    Enfin merci a tous, je n'ai plus de probleme, si ce n'est de comprendre pourquoi le code d'Amadeus ne fonctionnait pas il y a 2 jours quand c'est moi qui l'ai tapé ! :D Bye !

                    EDIT : Je viens effectivement de tester mon prog avec un int, ça passe tout seul, et j'ai essayer avec le char, et bien vous savez quoi ? Ca marche pas ! Voila l'erreur, merci de me l'avoir communiquée ! Bye
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Probleme TRES mystérieux

                    × 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