Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] animation

comment qu'on fait ?

Sujet résolu
    24 août 2006 à 12:06:58

    bonjour tout le monde, une autre question, existe-t-il une librairie pour jouer des animations en SDL ?

    Où je doit faire ça a la main ? :pirate:

    si je doit le faire a la main, j'ai déja un peu commencer et j'ai un probleme ...en fait, je blitte une image puis j'utilise un delay puis je reblitte, puis je redelay,etc ...mais ... pendant ce temps je peut rien faire d'autre dans mon programme, a cause des delays ... quelqun sait comment régler le probleme ?
    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2006 à 12:22:29

      C'est simple dés que tu affiche ton personnage tu changes d'image de perso et ainsi de suite, tu peut aussi changer d'images apres l'avoir afficher x fois , pour ralentir l'animation
      • Partager sur Facebook
      • Partager sur Twitter
        24 août 2006 à 12:30:31

        utilise des threads si tu veux faire plusieurs choses en même temps...
        • Partager sur Facebook
        • Partager sur Twitter
          24 août 2006 à 12:54:55

          c'est aussi ce que j'avais crut comprendre ... le problème qui se pose est : CEstQuoiUnThreadCommentCaMarche ?

          et aussi t4g1 >> c'est pas assez précis,je ne connait pas le temps que met mon pc pour faire un tour de boucle ...
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2006 à 13:03:34

            puisque la vitesse d'execution du programme dépend effectivement totalement de la machine, le plus simple reste de changer ton image toutes les X millisecondes et non pas toutes les X images (en règle génerale, tout est à calculer en fonction du temps écoulé et non pas du nombres d'images affichées).

            y'a une fonction SDL pour avoir le nombre de "ticks" (millisecondes) écoulés depuis je sais plus quoi (peu importe ^^) et qui correspond donc exactement à ce qu'il te faut, mais je n'ai plus le nom en tête.

            [edit] SDL_GetTicks() ^^
            • Partager sur Facebook
            • Partager sur Twitter
              24 août 2006 à 13:48:13

              k, jvais essayer de faire comme ça, merci :)
              • Partager sur Facebook
              • Partager sur Twitter
                24 août 2006 à 13:58:22

                On peut aussi utiliser un timer, si la base temps est connue, sinon c'est les threads et la programmation évenementielle, le timer n'étant qu'un thread particulier.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  24 août 2006 à 14:03:00

                  Cette question est fréquemment posées sur ce forum, n'oubliez pas la fonction de recherche ;)

                  Comme on te l'a surement dit, tu enregistre dans une image toute les frames de l'animation, et tu change la façon de blitter l'image en fonction de ce que retourne SDL_GetTicks()
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 août 2006 à 15:04:52

                    tu enregistre dans une image toute les frames de l'animation ...
                    dans un tableau ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 août 2006 à 15:16:14

                      Non, dans une simple image (dans ce genre là :http://www.games-creators.org/images/0/0c/Player.png )
                      Et tu n'affiche que la partie correspondante à la frame en cours
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 août 2006 à 15:18:45

                        Citation : LeClubber

                        utilise des threads si tu veux faire plusieurs choses en même temps...


                        Surtout pas ! Ne pas utiliser de thread dans un jeu (hors réseau), c'est inutile et ça rend le programme beaucoup plus lent et complexe !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 août 2006 à 15:33:18

                          Faite comme j'ai dit c'est plus simple, je suppossais qu'il utilisait déja SDL_GetTicks();
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 août 2006 à 15:56:55

                            Citation : T4g1

                            Faite comme j'ai dit c'est plus simple, je suppossais qu'il utilisait déja SDL_GetTicks();


                            c'est plus simple mais ça peut donner de (très) mauvais résultats pour peu que l'utilisateur ait une machine qui soit beaucoup moins ou beaucoup plus puissante que la tienne :/
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 août 2006 à 16:06:22

                              Pas si tu utilise SDL_GetTicks();
                              images[0] = ...;
                              images[1] = ...;

                              joueur = images[0]
                              Aprés x seconde, joueur = images[1];

                              Aprés x seconde, joueur = images[0];

                              et ainsi de suite...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 août 2006 à 16:57:21

                                oui, dans ton post tu parlais justement d'attendre un certain nombre d'images avant de passer à l'étape d'animation suivante, et non pas d'attendre un certain temps; je suis d'accord avec ta deuxième version ^^
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 août 2006 à 17:44:11

                                  waoou, merci tout le monde, mais acieroid, comment-tu fais pour gérer la transparence ? parceque dans ton exemple,le fond est noir , tu pourrai etre plus précis silteplait ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    24 août 2006 à 17:48:57

                                    Soit, tu utilise une png pour la transparence, c'est la manière la plus simple. Ou bien tu défini une couleur de transparence (SetColorKey ou quelquechose du genre, va voir dans les tutos)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      24 août 2006 à 17:49:31

                                      ok, je me débrouillerais,merci a tous :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      [SDL] animation

                                      × 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