Annonce

Réduire
Aucune annonce.

NGF Dev. Inc©

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Envoyé par CeL
    EDIT: Ahh si je vois l'image, nickel !
    Heu en fait les largeur et hauteur doivent être des multiples de 16
    56 de large c'est trop ou pas assez large, il faut choisir soir 48 soit 64
    Je vais retailler et animer pour voir le rendu.

    EDIT : ca rentre dans des cases de 48x48
    Dernière modification par CeL, 05 mars 2010, 08h50.

    Commentaire


    • J'avais mis 56 car multiple de 8, et parce qu'une des étape fais 51 ou 52 px de large. Je vais corriger ça.
      Le fichier d'origine vient de spritedatabase, je peux faire les autres anims si besoin.

      Commentaire


      • Animé ca donne ca

        Commentaire




        • Deux idées :
          Remplacer les vies par une barre et faire en sorte que les boules fassent des dégâts en rapport avec leur taille
          Donner un comportement différent aux boules suivant leur couleur (vitesse, angle du rebond, ...)
          Des trucs simples, faciles quoi...

          Commentaire


          • Pour résumer, quand on "fabrique un sprite" on respecte la convention ci dessous :
            • Fond (transparence) Noir.
            • Hauteur en multiple de 16 (1 tile)
            • Largeur en multiple de 16 (1 tile)
            • Palette de 16 couleurs.



            Je peux en fournir sur demande, je suis en plein dedans et le mécanisme est désormais plus que rodé.

            3615 Mylife : Je suis en train de créer mon moteur d'affichage perso. TRES lourd comme procédure.

            Commentaire


            • NEED HELP !

              Je suis sur la construction de mes "structures de sprites", mais un truc déconne et je m'emmêle avec les pointeurs et les types de variables crées par NEODEV.

              Ci dessous la création de ma structure SPRITE qui contiendra a terme les masques de collisions et d'autres détails

              // ..:: Mes structures ::..
              typedef struct {
              TILEMAP tilemap; // Le tilemap utilisé pour le sprite en question.
              int sequence[64]; // Les tiles utilisés dans l'ordre.
              int dimensions[4]; // width_min, width_max, height_min, height_max.
              } SPRITE, *PSPRITE;
              Le "maptile" importé :
              extern TILEMAP bullet[]; // Bullet de 6*1 (6 tiles de 1*1)
              Une création de structure dans mon main :
              SPRITE bullet_1;
              bullet_1.dimensions[0]=6;
              bullet_1.dimensions[1]=8;
              bullet_1.dimensions[2]=6;
              bullet_1.dimensions[3]=8;
              bullet_1.tilemap=*bullet;
              Et un affichage custom de sprite généré par la fonction habituelle. Aère ligne avec le maptile de base, et 2nde avec mon maptile SPRITE custom de la mort.

              sprite_num_player1 = write_sprite_data(100, 100, 15, 255, 1, 6, (const PTILEMAP)&bullet);
              sprite_num_player2 = write_sprite_data(100, 120, 15, 255, 1, 6, (const PTILEMAP)&bullet_1.tilemap);
              On voit bien dans le screenshot ci dessous que seul le premier tile est récupéré via le pointeur bullet_1.tilemap=*bullet;...



              Alors, où est l'erreur ? Dans la déclaration de structure ou dans l'initialisation de celle-ci ?

              Celui qui me trouve la solution (CeL?) je lui lache une quisition poétique

              Pour ceux qui lisent et comprennent rien, la suite ici.

              Commentaire


              • Je verrai ce soir avec les images, si t'as pas trouvé d'ici là.

                EDIT: comme ca sans pouvoir tester essaies avec &bullet_1->tilemap
                Dernière modification par CeL, 05 mars 2010, 15h48.

                Commentaire


                • Je ne penses pas qu'il y ai besoin des images pour ça, c'est du code pur.

                  La preuve, ça fonctionne nickel avec le tilemap d'origine.

                  Voici le répertoire de travail avec tous les fichiers, makefiles et BMP (y'a plus qu'a faire le make dans ton DOS).


                  -> http://www.megaupload.com/?d=3I75WS8U


                  Quoi qu'il en soit, merci d'avance. J'espère que ça te parlera plus avec le code.

                  EDIT, je viens de voir ton édit :

                  sprite_num_player2 = write_sprite_data(100, 120, 15, 255, 1, 6, (const PTILEMAP)&bullet_1->tilemap);
                  main.c: In function `main':
                  main.c:73: invalid type argument of `->'
                  make: *** [c:\NeoDev/tmp/main.o] Error 1
                  Dernière modification par kamui-san, 05 mars 2010, 15h54.

                  Commentaire


                  • Mon C est assez rouillé, et je ne connais rien aux spécificités de la NEODEV, mais tu déclares dans ta structure une variable simple :
                    TILEMAP tilemap;
                    alors que ton bullet d'origine est un tableau
                    extern TILEMAP bullet[];
                    Vu que tu affectes ensuite le pointeur de l'un dans l'autre
                    bullet_1.tilemap=*bullet;
                    ça me semble normal que tu n'aies que le premier élément de récupéré
                    => Money Idol Exchanger Crew <=

                    Commentaire


                    • je ne fonctionne qu'avec des images "Image ou fake crew" ^^

                      essayes comme suit sinon ce soir je pourrai tester :
                      bullet_1.tilemap=&bullet;
                      ou caster comme suit
                      bullet_1.tilemap=(const PTILEMAP)&bullet;


                      puis :

                      sprite_num_player2 = write_sprite_data(100, 120, 15, 255, 1, 6, (const PTILEMAP)&bullet_1.tilemap);
                      Ça droit marcher ca.

                      j'ai pas accès au pc à partir de maintenant jusqu'a 20h

                      Commentaire


                      • Envoyé par Runik Voir le message
                        Mon C est assez rouillé, et je ne connais rien aux spécificités de la NEODEV, mais tu déclares dans ta structure une variable simple :


                        alors que ton bullet d'origine est un tableau


                        Vu que tu affectes ensuite le pointeur de l'un dans l'autre

                        ça me semble normal que tu n'aies que le premier élément de récupéré
                        Je suis d'accord, mais si je déclare mon "sprite.tilemap" comme un tableau, je suis obligé de déclarer la taille de celui-ci. J'ai testé en donnant comme taille 32 (amplement suffisant) et rien n'y fait. Le problème n'est pas dans la déclaration de la structure mais dans son initialisation.


                        Envoyé par CeL Voir le message
                        je ne fonctionne qu'avec des images "Image ou fake crew" ^^

                        essayes comme suit sinon ce soir je pourrai tester :


                        Ça droit marcher ca.

                        j'ai pas accès au pc à partir de maintenant jusqu'a 20h
                        Petit test :


                        typedef struct {
                        TILEMAP tilemap; // Le tilemap utilisé pour le sprite en question.
                        int sequence[64]; // Les tiles utilisés dans l'ordre.
                        int dimensions[4]; // width_min, width_max, height_min, haight_max.
                        } SPRITE, *PSPRITE;

                        SPRITE bullet_1;
                        bullet_1.dimensions[0]=6;
                        bullet_1.dimensions[1]=8;
                        bullet_1.dimensions[2]=6;
                        bullet_1.dimensions[3]=8;
                        bullet_1.tilemap=•
                        /sprite_num_player2 = write_sprite_data(100, 120, 15, 255, 1, 6, (const PTILEMAP)&bullet_1.tilemap);

                        Et le résultat
                        main.c: In function `main':
                        main.c:62: incompatible types in assignme
                        make: *** [c:\NeoDev/tmp/main.o] Error 1

                        Merci à tous les 2, on continue à se creuser la tête.

                        Quand la structure sera opérationnelle, ajouter, supprimer, animer et déplacer des sprite sera tool-assisted .

                        Commentaire


                        • Envoyé par kamui-san Voir le message
                          Je suis d'accord, mais si je déclare mon "sprite.tilemap" comme un tableau, je suis obligé de déclarer la taille de celui-ci. J'ai testé en donnant comme taille 32 (amplement suffisant) et rien n'y fait. Le problème n'est pas dans la déclaration de la structure mais dans son initialisation.
                          Toutafé, c'est pour ça que je te conseillerais plutôt de déclarer un pointeur sur TILEMAP dans ta structure, ce qui te permettrait d'avoir un lien vers n'importequ'elle taille de tableau ... j'utilise cette technique pour un projet perso, et ça fonctionne bien
                          => Money Idol Exchanger Crew <=

                          Commentaire


                          • Nouvelle avancée permettant de se creuser les neurones : Ca fonctionne super bien en définissant tile par tile.

                            typedef struct {
                            TILEMAP tilemap[32]; // Le tilemap utilisé pour le sprite en question.
                            int sequence[64]; // Les tiles utilisés dans l'ordre.
                            int dimensions[4]; // width_min, width_max, height_min, haight_max.
                            } SPRITE, *PSPRITE;
                            SPRITE bullet_1;
                            bullet_1.dimensions[0]=6;
                            bullet_1.dimensions[1]=8;
                            bullet_1.dimensions[2]=6;
                            bullet_1.dimensions[3]=8;
                            bullet_1.tilemap[0]=bullet[0];
                            bullet_1.tilemap[1]=bullet[1];
                            bullet_1.tilemap[2]=bullet[2];
                            bullet_1.tilemap[3]=bullet[3];
                            bullet_1.tilemap[4]=bullet[4];
                            bullet_1.tilemap[5]=bullet[5];
                            sprite_num_player1 = write_sprite_data(100, 100, 15, 255, 1, 6, (const PTILEMAP)&bullet);
                            sprite_num_player2 = write_sprite_data(100, 120, 15, 255, 1, 6, (const PTILEMAP)&bullet_1.tilemap);


                            Inconvénient(s) -> Initialisation très (trop) naze et trop longue. Obligation de déclaration de la taille du tableau tilemap dans la structure.

                            Vivement la solution par pointeurs.

                            Commentaire


                            • Envoyé par Runik Voir le message
                              Toutafé, c'est pour ça que je te conseillerais plutôt de déclarer un pointeur sur TILEMAP dans ta structure, ce qui te permettrait d'avoir un lien vers n'importequ'elle taille de tableau ... j'utilise cette technique pour un projet perso, et ça fonctionne bien
                              Un petit exemple de code stp ?

                              typedef struct {
                              PTILEMAP *ptilemap; // Le tilemap utilisé pour le sprite en question.
                              int sequence[64]; // Les tiles utilisés dans l'ordre.
                              int dimensions[4]; // width_min, width_max, height_min, haight_max.
                              } SPRITE, *PSPRITE;

                              Commentaire


                              • Envoyé par kamui-san Voir le message
                                Un petit exemple de code stp ?
                                Ben tu gardes bien ta structure comme définie, puis tu affectes

                                Code:
                                bullet_1.tilemap=bullet;
                                Là bullet_1.tilemap contiendra l'adresse mémoire de ton tableau, que tu devras caster pour le passer à ta fonction write_sprite_data ...

                                Bon, je vais essayer d'installer l'environnement de dev pour pouvoir tester, parceque j'ai plus l'habitude de bosser en C++ qu'en C, donc c'est pas évident d'être précis

                                Edit : ton fichier n'est apparemment plus dispo ... tu peux le réuploader stp ?
                                Edit2 : laisse tomber, c'est megaupload qui se fout de ma gueule ...
                                Dernière modification par Runik, 05 mars 2010, 18h33.
                                => Money Idol Exchanger Crew <=

                                Commentaire

                                Chargement...
                                X