Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Exercice de fin de chapitre de gestion des evenements (1/2)

Tampon de Zozor

Sujet résolu
    8 juillet 2006 à 21:40:09

    Bonsoir à tous :p !
    Voilà, j'ai un petit probleme, en fait, pour tout dire, je suis coincé, bon, pas grand chose, je sais bien, mais je n'arrive pas à réaliser l'exercice où il faut faire un tableau de 'SDL_Rect' :

    SDL_Rect position[10];

    Car apres, je met une boucle sur le cas où on appuie sur le boutton gauche de la souris (le 2° pression de boutton devrait mettre la 2° position de zozor --> un 2° Zozor)

    SDL_Event event;
    int continuer=1;
    int i;


    //... plus tard dans le code source :
    while(continuer)
    {
       SDL_WaitEvent(&event);
       switch(event.type)
       {
         case SDL_MOUSEBUTTONUP:
            for(i=0; i<10; i++)
            {
              position[i].x = event.button.x;
              position[i].y = event.button.y;
            }
            break;
         case SDLK_DELETE:
            for(i=0; i<10; i++)
            {
              position[i].x = -1;
              position[i].y = -1;
            }
            break;
       }
       //On efface l'ecran à l'aide de 'SDL_FillRect'
       //Ensuite on Blit que si les positions (x et y) sont != à -1:
       for(i=0; i<10; i++)
       {
         if(position[i].x != -1 AND position[i].y != -1)
         {
             //Et on Blit, on Blit, on Blit.....
         }
       }
       //on fait les dernieres opérations....
    }


    Alors là, ce code ne marche pas, et bein...je comprends et... je comprends pas en même temps (ce sentiment est tres bizarre :D)

    Pourriez-vous éclairer ma lanterne, sachant que à mon avis il n'y a pas grand chose à faire !
    • Partager sur Facebook
    • Partager sur Twitter
      8 juillet 2006 à 21:48:51

      if(position[i].x != -1 AND position[i].y != -1)

      Retourne en console, programmeur en herbe, tu ne mérite pas le titre de programmeur SDL :p
      if(position[i].x != -1 && position[i].y != -1)
      • Partager sur Facebook
      • Partager sur Twitter
        8 juillet 2006 à 23:56:04

        je croyais que l'on pouvait mettre 'AND' en C, vu que j'ai commencé par le PHP et que je n'ai jamais essayé ça dans un programme C...
        mais dans mon code source j'ai bien utilisé '&&'....
        et t'as pas la solution à mon probleme ? :(
        • Partager sur Facebook
        • Partager sur Twitter
          9 juillet 2006 à 0:01:38

          Merci d'expliquer l'exercice... Ca n'a pas l'air d'être grand chose, mais je n'ai pas lu les cours moi :p
          • Partager sur Facebook
          • Partager sur Twitter
            9 juillet 2006 à 12:31:47

            J'ai une question ayant un petit rapport avec ce topic :
            Je cherche simplement à faire une action si la personne appuis sur deux touches du clavier au meme moment.
            Pour :

            case SDLK_r "et" SDLK_UP
            evenement
            break;

            Comment faire svp ?


            • Partager sur Facebook
            • Partager sur Twitter
              9 juillet 2006 à 12:36:27

              Romantique il y a déjà plein de sujet sur ça.
              Il faut utiliser simplement des booléens.
              Si tu veux plus d'infos fait une recherche.
              • Partager sur Facebook
              • Partager sur Twitter
                9 juillet 2006 à 12:48:20

                Citation : Romantique

                J'ai une question ayant un petit rapport avec ce topic :
                Je cherche simplement à faire une action si la personne appuis sur deux touches du clavier au meme moment.
                Pour :

                case SDLK_r "et" SDLK_UP
                evenement
                break;

                Comment faire svp ?




                Je suis sympa^^ un lien qui explique ca, c'est en bas de la page quelqu'un qui m'a répondu
                • Partager sur Facebook
                • Partager sur Twitter
                  9 juillet 2006 à 12:58:50

                  DarkDominus ==> ok

                  TosTos ==> J'ai trouver mon bonheur, et tout marche parfaitement, merci beaucoup, mais maintenant j'ai un petit soucis dont je ne trouve pas la source :
                  J'appuis sur la gauche et sur le haut simultanément, je marche en diagonale mais quand je relache la touche haut sans relaché la touche gauche, mon personnage s'arrete.(il me faut enlever mon doigt de la touche gauche et la re enfoncer pour qu'il re avance à nouveau)
                  (Ca ne me le fait pas pour quand j'ai les deux touches enfoncer et que je lache la touche de gauche, mon personnage continuera de monter.)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2006 à 14:26:12

                    Hmm, sinon, pour revenir à ma question :o ...
                    Comment je fais moi pour faire un tampon d'une image ? (ici Zozor)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 juillet 2006 à 17:25:44

                      Mais c'est quoi qui ne va pas dans ton code? T'as un message d'erreur?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2006 à 18:15:58

                        Bon, c'est compris, je vais me débrouiller tout seul, merci :(

                        Edit : ça ne sert à rien que je répète mes réponses si c'est pour me poser à chaque fois les mêmes... et puis mon probleme est qu'il n'y a qu'un seul Zozor qui est à l'écran et qui s'affiche, un autre est à l'origine, mais ne bouge pas.... aurevoir
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juillet 2006 à 20:21:49

                          Salut,
                          Tu n'as qu'un seul Zozor qui s'affiche a l'ecran car tu initialise toutes les coordonées de ton tableau à la même valeur :


                               case SDL_MOUSEBUTTONUP:
                                  for(i=0; i<10; i++)
                                  {
                                    position[i].x = event.button.x;
                                    position[i].y = event.button.y;
                                  }
                                  break;


                          Tu as bien 10 Zozors mais tous au même endroit ! ;)

                          Tu peu par exemple utiliser une variable qui stock le numero du Zozor à traiter et à chaques click tu l'incremente, passé a 9 (car les tableaux commencent à 0 ne l'oublions pas :p ) tu le revien sur le 0.




                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 juillet 2006 à 21:56:07

                            ui, merci, j'avais la solution, je la mettrais une prochaine fois, mais merci ;)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [SDL] Exercice de fin de chapitre de gestion des evenements (1/2)

                            × 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