Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL]Transparence alpha

    24 août 2006 à 11:46:51

    Salut
    Je suis occupé a creer un jeu lost et j'ai un probleme au niveau de la transparence. J'ai fait un bout de code permettant de rendre transparent mon palmier quand mon perso passe en dessous mais ca ne fonctionne pas pouvez-vous m'aider?
    if(eventMap[niveauEnCours][i][6]==PALMIER_DECORS){
                positionDecors.x=eventMap[niveauEnCours][i][0];
                positionDecors.y=eventMap[niveauEnCours][i][2];
                if(positionPerso.x+96>eventMap[niveauEnCours][i][0]&&positionPerso.x<eventMap[niveauEnCours][i][1]&&
                   positionPerso.y+96>eventMap[niveauEnCours][i][2]&&positionPerso.y<eventMap[niveauEnCours][i][3])
                       SDL_SetAlpha(decors[PALMIER_DECORS], SDL_SRCALPHA, 128);
                else
                       SDL_SetAlpha(decors[PALMIER_DECORS], SDL_SRCALPHA, 255);
                SDL_BlitSurface(decors[PALMIER_DECORS],NULL,ecran,&positionDecors);
     }

    Au fait j'utilise "LoadImg()"
    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2006 à 12:26:38

      Déja c'est quoi l'erreur précisement ? le programme se ferme ? le palmier disparait ? le palmier reste opaque ?

      soit plus précis, et dans ce genre de cas il nous faudrait savoir comment tu fais tes niveaux, dans quoi tu stockes tes images ...
      • Partager sur Facebook
      • Partager sur Twitter
        24 août 2006 à 13:21:53

        Pourquoi ne pas rendre le palmier tjr transparent et le blitter après le perso ?
        • Partager sur Facebook
        • Partager sur Twitter
          24 août 2006 à 16:46:59

          Le bug c'est que mon palmier reste opaque
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2006 à 17:14:09

            Tu veux faire disparaitre le palmier quand ton personnage est en dessous ??
            Tu stockes quoi dans ton tableau? des coordonnées ? pouequoi tu fais [i][6] et pas un truc comme [i][5] , qu'y a t'il a [i][6], tu t'est pas facilité la tâche en faisant comme ca, pourquoi ne pas prendre ls systeme que mateo explique dans son Tp sur Mario Sokoban ?
            • Partager sur Facebook
            • Partager sur Twitter
              24 août 2006 à 21:31:43

              pour optiiser (un petit peu ) je peu te dire qu'un tableau a deux diension équivaut a un tableau a une diension
              table[x][y];
              <=>
              table[x*sizex+y];
              mais si tu t'en fout c'est pas grave
              • Partager sur Facebook
              • Partager sur Twitter
                25 août 2006 à 10:08:36

                eventEnCours[i][0]=positionX
                eventEnCours[i][1]=positionX maximal
                eventEnCours[i][2]=positionY
                eventEnCours[i][3]=positionY maximal
                eventEnCours[i][4]=type d'"evenement" (ici un palmier)
                eventEnCours[i][5]=nombre d'objet dans le palmier
                eventEnCours[i][6]=image a afficher

                • Partager sur Facebook
                • Partager sur Twitter
                  25 août 2006 à 10:55:08

                  Tu compare la position du perso + 96 a la poisition du palmier et la position du perso a la position du palmier max ??? Fait le contraire :

                  positionPerso.x+96>eventMap[niveauEnCours][i][1]&&
                  positionPerso.x<eventMap[niveauEnCours][i][0]&& positionPerso.y+96>eventMap[niveauEnCours][i][3]&&
                  positionPerso.y<eventMap[niveauEnCours][i][2])
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 août 2006 à 11:09:08

                    Je crois que j'avais eu le même problème pour créer un bouton (dans mon cas il fallait donc comparer la position de la souris à la surface+emplacement du bouton)

                    En fait, je crois que le langage ne supporte pas le test suivant:
                    if( condition1 && condition2 && condition3 && condition4 )


                    Il faut dans ce cas mettre des parenthèses; on fait alors 2 tests simultanés :
                    if( (condition1 && condition2) && (condition3 && condition4) )


                    En tout cas, pour mon problème, c'était ce qu'il fallait faire ^^ ça ne coûte rien d'essayer
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 août 2006 à 17:12:18

                      Je n'ai absolument aucun probleme avec ma collision je l'ai tester et elle fonctionne.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 août 2006 à 17:44:50

                        T'as du faire une erreur quelque part parce que la c'est normal que ca ne fonctionne pas Tu compare la position du perso + 96 a la poisition du palmier et la position du perso a la position du palmier max tu devrais comparer la position du perso + 96 a la poisition du palmier max et la position du perso a la position du palmier...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 août 2006 à 9:46:37

                          Non ma collision fonctionne je te dis je l'ai tester en lui faisant faire d'autre effefts : printf("OK"); et il marque OK dans le "stdout.txt" donc c'est bien la preuve que sa fonctionne.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 octobre 2006 à 22:21:40

                            si tu es en PollEvent c'est normal en gros tu fais 50% transparent mais comme c'est une boucle ca devient de moins en moins transparent jusqu a devenir normal

                            mais Wait event pour tester et tu veras jai le meme probleme actuellement donc si je trouve la solution je te le dis
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [SDL]Transparence alpha

                            × 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