Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion des colisions

    19 avril 2006 à 17:53:20

    :) Bonjour à tous

    Voila, je fait mon mario Sokoban et ... j'ai un blème dans la gestion des colisions :-°

    M@teo à créer une carte et la parcourt pour trouver mario et le déplacer selon sa position et la position des autres objets.. :)

    Mais je butte sur ce problème, comment faire pour que la fonction sache si elle est sur un mur ou une caisse .. ?
    En etant très simple, il faudrait faire :

    SDL_Surface *Mur = NULL;
    Mur = IMG_Load("mur.jpg");

    [..]
    switch(carte[i][j])
    {
    case Mur:
    [....] // On code le reste
    break;
    }



    Cependant ce code ne peut pas fonctionner ... :-°

    case Mur: /* error : pointers are not permitted as case values*/

    Donc, en regardant un peu chez M@teo .. j'ai essayé de faire un truc dans ce genre :

    SDL_Surface *Mur = NULL;
    enum{Mur};
    Mur = IMG_Load("mur.jpg");

    [..]
    switch(carte[i][j])
    {
    case Mur:
    [....] // On code le reste
    break;
    }




    Marche pas non plus évidemment :p

    enum{Mur}; /* error : Mur redeclared as different kind of symbol */

    Je n'ai pas bien saisi la technique proposée dans le cour et je vois pas vraiment comment faire autrement ... :(

    Ma question se résume à sa : Comment analyer un objet sur une carte ?

    :) Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2006 à 17:56:43

      En fait ta carte est un tableau de valeurs définies par un enum : MUR, VIDE, MARIO.
      donc tu vérifies si carte[i][j] == MUR par exemple.
      La ce que tu fais dans ton code c'est vérifier si carte[i][j] est égal à l'adresse de la surface Mur lol
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        19 avril 2006 à 17:59:47

        "l'incruste"

        et une question! ya vraiment personne qui peut me mettre une collision dans mon jeu sil vous plait..
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2006 à 18:01:47

          Citation : charly90

          "l'incruste"

          et une question! ya vraiment personne qui peut me mettre une collision dans mon jeu sil vous plait..



          Bah tape sur ton PC ca fera une collision.

          Tu parles de quoi comme collision? Qu'est ce que tu veux dire par "mettre une collision"?
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2006 à 18:02:10

            Pour répondre à Arkhiall :
            :-° oui mais elle le sait comment .. ?

            La carte est parcourue et j'aimerais qu'elle sache si mario se trouve dans le mur et qu'elle le stoppe à ce niveau ... :(

            ^^ donc même si mes codes sont complétements faux c'était juste pour donner une idée de ce qu'elle doit faire ...


            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              19 avril 2006 à 18:07:27

              ben mettre une collision empecher mon personnage de traverser un mur parceque jai pas comprit l'exemple de mateo.. :(
              • Partager sur Facebook
              • Partager sur Twitter
                19 avril 2006 à 18:15:52

                On reprend a 0.
                Vous avez au début une carte vide : une tableau 2D contenant que des 0.
                Ensuite vous blittez mario. En même temps, vous mettez la case ou vous l'avez blitté a la valeur MARIO (définie dans l'enum).
                Ensuite vous blittez vos murs, et pareil, dans chaque case contenant un mur, on la met a la valeur MUR.
                Ensuite, il suffit de vérifier si la case sur laquelle on veut avancer n'est pas égale à la valeur MUR!
                Plus clair la?
                :D
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  19 avril 2006 à 18:20:33

                  :(:(:(:( aa je desesper
                  JE TE COMPREND PARFAITEMENT
                  JE COMPREND VOS CODE

                  MAIS

                  JE VOIS PAS DU TOUT :(:(:'(

                  je sais pas moi ta pas un code HYPERR simple a nous montrer dont les surfaces sont coller de maniere "mateo" enfin voilas avec une mini collision juste une fenetre gerer
                  par un tableau 2D simple. enfin voilas sa m'enerve parceque jarrive a me debrouiller en C je connait les cour par coeur et la a chaque tp je me plante
                  ....alors que si je me fait un prog a moi quand jui inspirer ben sa marche super bien :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 avril 2006 à 18:23:22

                    Oulah
                    tu comprends mais tu vois pas?
                    Atooooole les opticiens!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 avril 2006 à 18:23:24

                      Citation : Arkhiall

                      On reprend a 0.
                      Vous avez au début une carte vide : une tableau 2D contenant que des 0.
                      Ensuite vous blittez mario. En même temps, vous mettez la case ou vous l'avez blitté a la valeur MARIO (définie dans l'enum).
                      Ensuite vous blittez vos murs, et pareil, dans chaque case contenant un mur, on la met a la valeur MUR.
                      Ensuite, il suffit de vérifier si la case sur laquelle on veut avancer n'est pas égale à la valeur MUR!
                      Plus clair la?
                      :D



                      :-° Moi je voudrais analyser la carte déjà toute faite ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 avril 2006 à 18:24:50

                        bah tu fais un double for:
                        for(i=0; i<tailleCarte; i++) {
                        for(j=0; j<tailleCarte; j++) {
                        if(grille[i][j] == MUR) //par exemple
                        }
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 avril 2006 à 18:28:09

                          ^^ Donc lors de la création de la carte, il faut absolument donner une valeur à chaque cases ...

                          :-° et ensuite on peut l'analyser facilement

                          :p Et si on donne pas de valeurs aux cases ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 avril 2006 à 18:31:48

                            mets tout a 0 dès le début! Avec un for.
                            Ensuite tu modifies quand tu blittes.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              19 avril 2006 à 18:32:42

                              personne pour me mettre une collision dans mon jeu :'(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 avril 2006 à 18:34:20

                                erf je peux pas faire plus simple comme explication...
                                tu comprends pas quoi?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 avril 2006 à 18:36:36

                                  Citation : Arkhiall

                                  mets tout a 0 dès le début! Avec un for.
                                  Ensuite tu modifies quand tu blittes.



                                  ^^ Sa devrait être bon, je vais donner mes valeurs à mes cases
                                  Je te redis :p
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    19 avril 2006 à 18:37:19

                                    benn moi sais coller des surfaces.. coller mon personnage le deplacer et mettre des condition pour
                                    dire un truc du genre si la touche haut est appuiyer alors personnage monte mais si il se trouve dans une zone inferieur a 200 et superieur a 100 (une plateforme par exemple) alors il peut pas monter. voilas mais l'histoire du tableau 2d et de surface a coller a partir de ce tableau ... :'( sa m'embrouille naaan serieu vous avez pas un
                                    mini mini code d'exemple...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 avril 2006 à 18:40:23

                                      Citation : charly90

                                      benn moi sais coller des surfaces.. coller mon personnage le deplacer et mettre des condition pour
                                      dire un truc du genre si la touche haut est appuiyer alors personnage monte mais si il se trouve dans une zone inferieur a 200 et superieur a 100 (une plateforme par exemple) alors il peut pas monter. voilas mais l'histoire du tableau 2d et de surface a coller a partir de ce tableau ... :'( sa m'embrouille naaan serieu vous avez pas un
                                      mini mini code d'exemple...



                                      Bah pour ca tu relis le cors et comme mini code d'exemple tas le mario sokoban...
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        19 avril 2006 à 18:51:46

                                        Hey!
                                        Je vais pas te réexpliquer comment blitter une surface à telle ou telle coordonnée et à gérer les touches non?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          19 avril 2006 à 19:08:25

                                          mais sa je sais le faire!
                                          ce que je comprend pas c le tableau moi je deplace mes personnage pixel par pixel pas par "case" dans un tableau 2d :'( enfin pfff voilas quoi.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 avril 2006 à 19:24:14

                                            bah si une "case" fait 40 par 40 pixels au lieu de rajouter/retirer 1 pixel tu rajoutes/retires 40?
                                            Si tu veux blitter un mario dans la case [5][5] tu fais x = 5*40 et y=5*40?
                                            Enfin voila quoi ^^
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              19 avril 2006 à 20:58:53

                                              aaaaaaaaaaaaaaaa ca marcheeeeeeeeeeeeee!!!
                                              merci! :):):) a okkk javai pas comprit!! je pensait qu'une case fesait un pixel mais quel *** !!! mais quel *** MERCIII infiniment!!
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                19 avril 2006 à 21:21:20

                                                hi! :) comment tu dit!
                                                atoooooooooooooole les opticiens!!
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Gestion des colisions

                                                × 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