Partage
  • Partager sur Facebook
  • Partager sur Twitter

j'arrive pas a afficher une surface

Sujet résolu
    2 juin 2006 à 18:17:08

    salut aider moi s'il vous plait je n'arrive pas a afficher une surface,
    juste une surface.(pourtant le code et presque le meme que celui du cours)


    SDL_Init(SDL_INIT_VIDEO);
               
        SDL_Surface *ecran = NULL;// créé la surface écran
        ecran = SDL_SetVideoMode( SIZE_X , SIZE_Y , 24,SDL_HWSURFACE | SDL_DOUBLEBUF);   
        ecran = SDL_CreateRGBSurface(SDL_HWSURFACE, SIZE_X , SIZE_Y , 24, 0, 0, 0, 0);
        SDL_WM_SetCaption("Pong", NULL);
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        SDL_Flip(ecran);
        pause();   

    en fait la surface s'affiche mais pas de la bonne couleur


    J'aierais bien que vous testié ce code pour voir si ce n'est pas la SDL qui bug chez moi
    • Partager sur Facebook
    • Partager sur Twitter
      2 juin 2006 à 18:25:27

      Tu ne peux pas faire un appel de SDL_CreateRGBSurface sur ta surface ecran, car elle a été créé par ton appel à SDL_SetVideoMode.
      • Partager sur Facebook
      • Partager sur Twitter
        2 juin 2006 à 19:06:15

        c'est logique que ca ne marche pas faut que tu creer une autre variable de type SDL_Surface

        SDL_Surface *surface = NULL


        Ensuite tu utilise la fonction pour creer une surface, ensuite tu la peind :D, puis tu blit a la position que tu veux, et enfin tu actualise ton affichage avec
        SDL_Flip(ecran)
        • Partager sur Facebook
        • Partager sur Twitter
          3 juin 2006 à 12:14:57

          j'ai encore un petit probleme en faite je programme un pong et pour l'instant tou marche bien ais il y a un défault(un gros meme):
          -les deux joueurs ne peuvent pas utiliser simultanément les touches,
          celui qui a appuyer en dernier a sa raquette qui se déplace pas l'autre
          • Partager sur Facebook
          • Partager sur Twitter
            3 juin 2006 à 12:45:30

            c'est logique enfin je croi parce que si j'ai bien compris ce que on dit sur le sdz la SDL ne permet pas de gerer l'appuye sur 2 touche simultané ou alors j'ai pas bien compris ca que certaine personne on demandé
            • Partager sur Facebook
            • Partager sur Twitter
              3 juin 2006 à 12:53:39

              si si sa gere il faut verifier si deux bolléens sont activer en même temsp et les activer a l'appuye d'une touche
              • Partager sur Facebook
              • Partager sur Twitter
                3 juin 2006 à 12:54:48

                SDL ne le permet pas si tu veux dire des fonctions toutes pretes , mais il est toute a fait possible de le faire.
                plus d'un topic en parle, des bools par exemples ...
                • Partager sur Facebook
                • Partager sur Twitter
                  3 juin 2006 à 13:09:07

                  moi je fais un jeu style bomberman et on peu jouer à deux. et donc mes deux perso se déplace en même temps. le joueur 1 utilise les touches Z,Q,S,D et le 2 les fléches.


                  EXEMPLE :
                  if(keys[SDLK_z])
                  {
                      //joueur 1 avance
                  }
                  if (keys[SDLK_UP])
                  {
                      //joueur 2 avance
                  }


                  tout ça dans la boucle principale biensur et ça roule. pa besoin de se casse la tête avec des booléens.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 juin 2006 à 13:13:52

                    quand meme vous faite des truc de fou moi je creer bomberman moi et ben cets pong etc..

                    il faut que je finisse de rentrer lalocation dinamique dans la tete et ensuite hop la sdl XD
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 juin 2006 à 14:10:19

                      nightcyborg , si les deux joueurs apui en même temps donc par exemple z et "up" en même temps , ca marche??
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 juin 2006 à 14:40:20

                        oui, ca marche parfaitement. ça marcherais pas si il y avait des else if. mais là c'est bon.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 juin 2006 à 14:45:55

                          nightcyborg > ton tableau keys[] il est de quel type?? parce qu'il me semble que tu utilise tout de même des booleens avec ton code
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 juin 2006 à 15:22:41

                            j'ai pas ma source sous les yeux, mais il me semble que c'est du Uint8.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 juin 2006 à 15:28:27


                              if(keys[SDLK_z])
                              {
                                  //joueur 1 avance
                              }
                              if (keys[SDLK_UP])
                              {
                                  //joueur 2 avance
                              }


                              bah si c'est pas des bools ca peut pas , j'imagine mal qu'on ai keys[SDLK_z] et keys[SDLK_UP] en même temps pour que les deux joueurs puissent avancer ...
                              je suis pas trop la o_O

                              sauf si tu les utilises comme des bool :lol:
                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 juin 2006 à 16:50:44

                                ouai, c'est vrai que ca revien a des booléens, mais en gros


                                if(keys[SDLK_z])//si on la touche z est vrai
                                {
                                    //joueur 1 avance
                                }
                                if (keys[SDLK_UP])//si la touche haut est vrai
                                {
                                    //joueur 2 avance
                                }


                                ca empéche pas que ça fonctionne.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 juin 2006 à 16:53:55

                                  Citation : nightcyborg

                                  pa besoin de se casse la tête avec des booléens.



                                  :-° , c'est juste que tu n'utilise pas le type "bool" parsque tu es en C et non en C++ ( en tout cas j'espere que tu codes en C parsque sinon tu te comliques... )

                                  ( manu31 faudrai penser à mettre le post en resolu )

                                  [EDIT]merci pour l'info tebonb ;) [/EDIT]
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 juin 2006 à 17:17:39

                                    Au lieu d'utiliser des booléens, vous pouvez aussi utiliser la fonctoin SDL_GetKeyState, ça a le mérite d'être déjà coder...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 juin 2006 à 17:19:43

                                      Citation : C@rn@GE59

                                      Citation : nightcyborg

                                      pa besoin de se casse la tête avec des booléens.



                                      :-° , c'est juste que tu n'utilise pas le type "bool" parsque tu es en C et non en C++ ( en tout cas j'espere que tu codes en C parsque sinon tu te comliques... )

                                      ( manu31 faudrai penser à mettre le post en resolu )



                                      -> C'est ce qu'on porterait à croire mais en cherchant dans la FAQ, On trouve ceci

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        8 juin 2006 à 21:07:52

                                        Citation : C@rn@GE59

                                        Citation : nightcyborg

                                        pa besoin de se casse la tête avec des booléens.



                                        :-° , c'est juste que tu n'utilise pas le type "bool" parsque tu es en C et non en C++ ( en tout cas j'espere que tu codes en C parsque sinon tu te comliques... )

                                        ( manu31 faudrai penser à mettre le post en resolu )

                                        [EDIT]merci pour l'info tebonb ;) [/EDIT]



                                        nan je suis bien en C, mais en fait je voyais pas mes test comme des tests de booléen. j'y avais pas reflechi.
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        j'arrive pas a afficher une surface

                                        × 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