IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Remake Zelda sur GBC


Sujet :

Projets

  1. #81
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Voilà une nouvelle MAJ.

    - AJout d'un donjon de TEST avec 4 salles
    - Ajout e la transition entre monde extérieur "overworld" et donjons
    - Corrections de divers bugs

    N'hésitez pas à tester je suis sur qu'il y a plein de bugs cachés

    Côté fuite de mémoire, je suis content aucune fuite de mémoire sauf celle d'Allegro, la bibliothèque graphique.

    Lien : http://www.tutoworld.com/temp/zeldaa_delta1.zip
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #82
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Deja bravo pour cette nouvelle version

    Je n'ai pas vu de bug a l'exterier
    La musique ne joue pas chez moi

    Sinon peut etre que les projections sont trop puissantes ... Mais je n'ai pas reussi a en produire un bug
    Sinon ... je fais comment moi dans la salle du bas ou le sol s'effondre ?
    (Rah en plus ... lorsque l'on tombe ... on tombe pour l'infinie ) et je ne perd pas de vie .....

    En regardant les cartes / donjons je n'ai pas compris comment vous dites au jeu que le sol doit s'effondrer ...

    J'ai eu mon premier rubis, mais le compteur ne me l'a pas compter
    Ah, et puis, la cle, lorsqu'elle touche le sol est prennable meme si elle rebondi (cle des donjons ) mais cela cest du peauffinage :p

    Je ne comprends pas la salle en haut a droite .... on ne peut rien bouger ?

    Sinon, bravo bonne continuation
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #83
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Deja bravo pour cette nouvelle version
    Merci
    Citation Envoyé par LittleWhite Voir le message
    Je n'ai pas vu de bug a l'exterier
    La musique ne joue pas chez moi
    Normal il n'y en a pas, juste des bruitages J'arrive pas à trouver des bonnes musique de fond pour les mondes.
    Citation Envoyé par LittleWhite Voir le message
    Sinon peut etre que les projections sont trop puissantes ... Mais je n'ai pas reussi a en produire un bug
    Sinon ... je fais comment moi dans la salle du bas ou le sol s'effondre ?
    (Rah en plus ... lorsque l'on tombe ... on tombe pour l'infinie ) et je ne perd pas de vie .....
    Alors oui c'est un bug et non, en fait c'est une nouveauté dans mon jeu par rapport aux Zeldas classiqeus (il faut changer un peu sinon c'est barbant^^) => ca s'appelle LA salle piégée, il y en aura une dans chaque donjon, ca remplace en fait le mini boss qui n'a que peut d'intérêt à mon sens. Dans le donjon test, il est décousu car il n'y a pas de scénario derrière donc il vous etait impossible de savoir comment sortir de cette salle vivant

    Pour en sortie, il suffit de pousser le bloc vers le haut

    Les salles piégées sont mortelles donc quand on tombe dans un trou, on meurt instantanément (il faut encore le programmer)
    Citation Envoyé par LittleWhite Voir le message
    En regardant les cartes / donjons je n'ai pas compris comment vous dites au jeu que le sol doit s'effondrer ...
    Alors en fait c'est dans le fichier de conf qui s'appelle demotest.xml je crois d'ailleurs je vais le renommer un jour... Et il y a la config pour chaque salle et j'ai indiquée que la salle était piégée (piegee = 1) et que le type de piege était "ecroulement en escargot" (<piege type=0 />)
    Citation Envoyé par LittleWhite Voir le message
    J'ai eu mon premier rubis, mais le compteur ne me l'a pas compter
    Normal, c'est pas programmé
    Citation Envoyé par LittleWhite Voir le message
    Ah, et puis, la cle, lorsqu'elle touche le sol est prennable meme si elle rebondi (cle des donjons ) mais cela cest du peauffinage :p
    Exact un "ptit" bug quoique dans le jeu original, on peut prendre la clé en vol.
    Citation Envoyé par LittleWhite Voir le message
    Je ne comprends pas la salle en haut a droite .... on ne peut rien bouger ?
    C'est exact, elle n'est pas programmée encore.
    Citation Envoyé par LittleWhite Voir le message
    Sinon, bravo bonne continuation
    [/quote]
    Et un petit merci pour finir
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #84
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Merci

    Normal il n'y en a pas, juste des bruitages J'arrive pas à trouver des bonnes musique de fond pour les mondes.
    Alors aussi bien que celles du jeu d'origine

    Alors oui c'est un bug et non, en fait c'est une nouveauté dans mon jeu par rapport aux Zeldas classiqeus (il faut changer un peu sinon c'est barbant^^) => ca s'appelle LA salle piégée, il y en aura une dans chaque donjon, ca remplace en fait le mini boss qui n'a que peut d'intérêt à mon sens. Dans le donjon test, il est décousu car il n'y a pas de scénario derrière donc il vous etait impossible de savoir comment sortir de cette salle vivant

    Pour en sortie, il suffit de pousser le bloc vers le haut
    Je l'avais pousse ... mais pas vers le haut
    Drole d'idee

    Alors en fait c'est dans le fichier de conf qui s'appelle demotest.xml je crois d'ailleurs je vais le renommer un jour... Et il y a la config pour chaque salle et j'ai indiquée que la salle était piégée (piegee = 1) et que le type de piege était "ecroulement en escargot" (<piege type=0 />)
    J'aurais pense a utilise une nouvelle couleur sur les bitmaps des salles

    Exact un "ptit" bug quoique dans le jeu original, on peut prendre la clé en vol.
    Dans le votre on ne peut pas ...

    [/quote]
    Et un petit merci pour finir [/QUOTE]
    Merci a vous de nous faire jouer a un bon jeu
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #85
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Aussi j'en profite pour demander conseils sur la structures des classes du jeu

    Alors je n'arrive pas à trouver une implémentation correcte pour la gestion des objets car il y a pas mal de différences :
    - Certains objets se trouvent que dans les zones "overworld" d'autres dans les donjons
    - Les actions des objets au contact du héro ne sont pas les même.
    * un coffre, il faut appuyer sur une touche pour l'ouvrir
    * un buisson on peut le détrurie ou le porter
    * un coeur ou des munitions ca se prends et s'ajoutent au stock existant.
    * un bloc ca se pousse d'une case ou de plusieurs (ca dépens du bloc) mais ca ne peut pas se porter, ni être détruit...
    * une clé se trouve que dans un donjon et sert à ouvrir une porte à clé (sans blague ? )
    * carte et boussoles sont des objets uniquement liés aux donjons.
    [etc]

    Par contre, chaque objet à une position et une taille (attributs x,y et tx, ty), ils ont tous une méthode d'affichage et d'autres méthodes en commun en fonction du type d'objet...

    Voilà, je suis un peu perdu, je ne sais pas si je dois créer une classe par objet (c'est ce que je commence à faire) mais c'est pas la solution à mon avis.
    L'héritage + polymorphisme, j'ai du mal à voir comment le gérer vu que les actions sur chaque objet est différnte !

    L'idéal serait dans ma boucle de jeu d'avoir genre une fonction commune qui dit :
    Au contact du héro, appliquer l'action de l'objet touché
    Mais à mon avis c'est pas possible...

    Voilà si vous avez des idées, je suis preneur de tout !

    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #86
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Aussi j'en profite pour demander conseils sur la structures des classes du jeu

    Alors je n'arrive pas à trouver une implémentation correcte pour la gestion des objets car il y a pas mal de différences :
    - Certains objets se trouvent que dans les zones "overworld" d'autres dans les donjons
    - Les actions des objets au contact du héro ne sont pas les même.
    * un coffre, il faut appuyer sur une touche pour l'ouvrir
    * un buisson on peut le détrurie ou le porter
    * un coeur ou des munitions ca se prends et s'ajoutent au stock existant.
    * un bloc ca se pousse d'une case ou de plusieurs (ca dépens du bloc) mais ca ne peut pas se porter, ni être détruit...
    * une clé se trouve que dans un donjon et sert à ouvrir une porte à clé (sans blague ? )
    * carte et boussoles sont des objets uniquement liés aux donjons.
    [etc]

    Par contre, chaque objet à une position et une taille (attributs x,y et tx, ty), ils ont tous une méthode d'affichage et d'autres méthodes en commun en fonction du type d'objet...

    Voilà, je suis un peu perdu, je ne sais pas si je dois créer une classe par objet (c'est ce que je commence à faire) mais c'est pas la solution à mon avis.
    L'héritage + polymorphisme, j'ai du mal à voir comment le gérer vu que les actions sur chaque objet est différnte !

    L'idéal serait dans ma boucle de jeu d'avoir genre une fonction commune qui dit :

    Mais à mon avis c'est pas possible...

    Voilà si vous avez des idées, je suis preneur de tout !

    Merci
    Dans un fichier, on peut utiliser juste un numéro:
    1 -> coeur
    2 -> rubis
    ...

    Et du coté code, cela peut être un enum (soit un numéro mais avec un joli nom :p)

    Pour l'héritage, détrompez vous, mais c'est le truc préferré d'un programmeur de jeux videos en C++ et il adore faire ce que vous venez de décrire :p

    Vous avez une classe Objet, qui est abstraite (avec au moins une fonction virtuelle pure)
    Du coup, comme elle a une fonction pure virtuelle, elle ne peut pas être instancier (obligation de l'héritage) et dans cette obligation, vous avez aussi l'obligation de ré-implémenter la fonction dans toute les classes hérités.
    Donc, notre class Objet à pour fonction virtuelle pure, la fonction action()
    La classe Objet se fera hérité par plusieurs classes, du genre:
    Obstacle ( mur, panneau , coffre ... enfin tout les trucs que l'on ne peut pas détruire, ni porter)
    Mais aussi par
    Collectable (je ne sais pas le nom qu'il faut donner, mais ce sont tout les trucs que l'on ramasse ... coeur / rubis ... )
    Et une troisième (j'ai un problème de nom) pour les trucs du genre les buissons (qui sont soulevable)
    Ces classes non pas d'obligation d'implémenter la fonction 'action' si elle la déclare comme virtuelle pure (reportage du problème un peu plus loin)
    Comme avant, elles ne pourront pas être instancier du coup.
    Et finalement, on hérite nos 3 classes qui spécialisent un peu, par des:
    -Coeur
    -Pancarte

    Et tout objet dont on a besoin. Le mieux, c'est que par exemple, un coeur peu hérité de Soulevable et Collectable si besoin est.

    Dans la boucle principale, ces instances d'Objet ne seront représenté que par des pointeur sur Objet, mais on en appelant la fonction action() ... c'est la fonction réimplémenter dans la classe fille la plus basse de l'héritage, qui sera appelé.

    Voilà ...

    Par contre, si vous n'avez rien compris, je vous conseille d'aller lire un cours sur le C++
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #87
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Alors j'ai presque tout compris (incroyable pour un débutant en C++ )
    Je crois que ca sent la notion d'héritage multiple...

    Soit une classe objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Objet
    {
    private:
    int x,y,tx,ty;
     
    public:
    Objet();
    virtual ~Objet();
     
    virtual void action()=0; // virtuelle pure ^^
    void affichage(); 
    };
    Soit une classe Collectable pour commencer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Collectable : public Objet
    {
    private:
     
    public:
    Collectable();
    virtual ~Collectable();
     
    // on ne défini pas la méthode action
    };
    Enfin, soit un coeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Coeur: public Collectable
    {
    private:
     
    public:
    Coeur();
    ~Coeur();
     
    // on défini enfin la méthode action()
    void action();
    };
    Et donc dans mon main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Objet* obj = NULL;
    Coeur* c = new Coeur();
    obj = c; // c'est pas bizarre ca ?
     
    while (finJeu)
    {
          while (tick > 0)
         {
              // moteur de jeu
               obj ->action();
          }
     
          // affichage
          obj->affichage();
    }
    Est ce que j'ai bien compris ou rien du tout, ca me parait un peu bizarre mon code...

    Autre chose, ca risque pas de poser un problème cette implémentation si je sépare le "logic" de l'affichage ?

    PS : en mode aucun rapport, vous jouez aux echecs ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #88
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Cela me semble très juste (Est ce vraiment avec mes explications que vous avez réussi à faire cela ? O_o)

    Dans le Collectable, j'aurais juste redéfinie la méthode action comme virtuelle pure, mais bon, si le compilateur accepte comme cela, c'est que c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    obj = c; // c'est pas bizarre ca ?
    Oui et non. Il faut faire très attention de ne pas supprimer les deux pointeurs (soit faire deux delete) mais sinon c'est juste.
    En français, on dit ... que Coeur est un Objet. Donc un pointeur sur un Objet peut pointer sur un Coeur ... :p non ?

    PS: Ouep, j'ai joué aux echecs ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #89
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Et oui c'est grace à vos explications, je connais déjà l'héritage de base et j'avais appris le polymorphisme sur le net mais c'était très bien expliqué

    Maintenant un autre quesiton : si je veux que mon coeur soit collectable et aussi soulevable, si je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    class Soulevable: public Objet
    {
    private:
     
    public:
    Soulevable();
    virtual ~Soulevable();
     
    // on ne défini pas la méthode action
    };
     
    class Coeur: public Collectable, Soulevable
    {
    private:
     
    public:
    Coeur();
    ~Coeur();
     
    // on défini enfin la méthode action()
    void action();
    };
    Le compilateur rale sur la ligne :
    Car il dit que c'est ambigue :
    `Objet' is an ambiguous base of `Coeur'
    En fouillant sur le net, j'ai trouvé qu'il fallait faire un héritage virtuelle mais je comprends pas pourquoi ca marche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class Soulevable: virtual public Objet
    class Collectable: virtual public Objet
    PS : Car j'ai joué aussi 5 ans aux echecs et ca me manque , vous avez joué en club, vous avez quel niveau ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  10. #90
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Pour l'héritage multiple j'aurais fait comme vous, mais cela fait très longtemps que je n'en ai pas fait (juste en cours) du coup la syntaxe que je connais doit être un peu fausse (le compilateur a toujours raison :p)

    A propos du hors sujet des echecs ... je ne vais pas le continuer, car bon ... c'est un hors sujet :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #91
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Oki pas de soucis ca passe avec de l'héritage virtuel mais j'aime pas ne pas comprendre ce que je code et j'espère que ca me jouera pas des tours après. je vais essayer d'implémenter ca dans le jeu et on verra
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  12. #92
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Salut,

    Ton "bug" avec l'héritage multiple est simple. Le mot clé virtual dans l'héritage servira à dire au compilateur "Je vais créer un objet, qui à deux parents qui on le même parent".

    - Objet-
    Soulevable - - Collectable
    - Coeur-

    En faite, le compilateur chouigne car lorsque tu vas instancier un Objet. Il va te créer un Objet...Jusque la rien de bien extraordinaire. Ensuite tu vas demander de créer un Cœur, si tu fais pas l'héritage virtuel, le compilateur vas appeler les constructeurs dans cet ordre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Objet ->Soulevable->Objet->Collectable->Coeur
    // ou
    Objet ->Collectable->Objet->Soulevable->Coeur
    Un problème évident est l'appel à 2 fois de Objet, il te créer donc un cœur avec 2 grand-parents qui sont en mémoire totalement différent (2 fois l'espace requis).
    Un test simple, utilise l'opérateur de porter "::" pour changer une variable d'Objet en passant pas Soulevable, ensuite lis la même variable en passant par Collectable, les valeurs sont différentes! Tout simplement car à la construction il a construit 2 grand-parent différent.

    Avec virtual, tu dis au compilateur " Fais ton boulot mais je ne veux que 1 seul et unique grand-parent Objet. Dans ce cas, il appellera les constructeurs dans l'ordre suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Objet ->Soulevable->Collectable->Coeur
    // ou
    Objet ->Collectable->Soulevable->Coeur
    Donc maintenant que tu as une seule instance de Objet dans ton coeur, l'affectation:
    Il n'y aura plus de souci, simplement car il trouve un seul Objet dans le cœur et non pas deux comme avant, d'où le faite qu'il sais lequel prendre
    Homer J. Simpson


  13. #93
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Bonsoir à tous,

    Je suis de retour pour sortir ma première version démo de mon zelda.
    Etant très pris niveau boulot en ce moment je n'ai pas eu beaucoup de temps pour coder, ce qui explique mon retard

    Mais non le projet n'est pas abandonné ! Loin de là

    Alors question nouveautés :
    - trois objets (epée, bracelet et plume pour sauter ouaiis )
    - deux zones extérieures
    - un donjon complet avec
    * 7 salles et des énigmes
    * gestion des coffres
    * gestion de la carte (c'est super moche mais ca marche), de la boussole pour les sons dans les salles à clé et de la clé du boss pour la porte du boss
    * gestion du téléporteur de mi-donjon (après avoir désarmé le piège dans la salle piégée)
    - transitions entre les différents types de zones

    Lorsqu'on prend le téléporteur mi-donjon, lors de la transition vous verrez une ecran noir bizarre avec des rayures, c'est pas grave c'est un petit bug d'Allegro avec la gestion de la transparence, j'essaye de résoudre le problème sur le forum officiel.

    Autre chose, pour le saut, il y a un problème pour les directions UP et DOWN, vous verrez
    En fait, je n'utilise pas de sprites pour cette animation mais des fonctions de rotations des sprites que fournit Allegro mais pour les direction UP et DOWN, je n'arrive pas à trouver d'algorithme alors que pour les directions RIGHT et LEFT ca marche nickel

    Et sinon j'ai coupé les musiques donc pas d'inquiétude mais j'ai laissé tous les sons.

    Voilà n'hésitez pas à tester de fond en comble

    Lien démo :
    http://www.tutoworld.com/temp/zelda_demo.zip

    Merci à tous
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  14. #94
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Bonsoir à tous,

    Je suis de retour pour sortir ma première version démo de mon zelda.
    Etant très pris niveau boulot en ce moment je n'ai pas eu beaucoup de temps pour coder, ce qui explique mon retard

    Mais non le projet n'est pas abandonné ! Loin de là
    C'est bon de l'entendre

    Citation Envoyé par Aspic Voir le message
    Alors question nouveautés :
    - trois objets (epée, bracelet et plume pour sauter ouaiis )
    - deux zones extérieures
    - un donjon complet avec
    * 7 salles et des énigmes
    * gestion des coffres
    * gestion de la carte (c'est super moche mais ca marche), de la boussole pour les sons dans les salles à clé et de la clé du boss pour la porte du boss
    * gestion du téléporteur de mi-donjon (après avoir désarmé le piège dans la salle piégée)
    - transitions entre les différents types de zones

    Lorsqu'on prend le téléporteur mi-donjon, lors de la transition vous verrez une ecran noir bizarre avec des rayures, c'est pas grave c'est un petit bug d'Allegro avec la gestion de la transparence, j'essaye de résoudre le problème sur le forum officiel.

    Autre chose, pour le saut, il y a un problème pour les directions UP et DOWN, vous verrez
    En fait, je n'utilise pas de sprites pour cette animation mais des fonctions de rotations des sprites que fournit Allegro mais pour les direction UP et DOWN, je n'arrive pas à trouver d'algorithme alors que pour les directions RIGHT et LEFT ca marche nickel
    Sur la version de base (GameBoy) ils utilisaient des sprites ... les rotations ont tendance à couter cher, ne fonctionne pas dans tout les cas (comme le HAUT / BAS)... et puis utilise peut être des virgules flottantes ... (ce qui n'est pas toujours disponible dans une console )

    Citation Envoyé par Aspic Voir le message
    Et sinon j'ai coupé les musiques donc pas d'inquiétude mais j'ai laissé tous les sons.

    Voilà n'hésitez pas à tester de fond en comble

    Lien démo :
    http://www.tutoworld.com/temp/zelda_demo.zip

    Merci à tous
    Je n'hésiterai pas à tester, mais faut tout d'abord que j'accède à un Windows :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  15. #95
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Bonsoir LittleWhite,

    Content de vous revoir sur mon topic
    Pour le saut, je sais qu'ils utilisaient des sprites mais vu que je n'ai pas ces sprites et que je suis nul en design, j'ai tenté de le faire par rotation même si c'est plus couteux niveau mémoire.

    J'attends avec impatience votre test (accessoirement vous pouvez le tester sous Linux ca fonctionne sauf le problème du temps d'invincibilité qui est long)

    Bonne soirée
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  16. #96
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Ah ah, je vois la rotation
    Cela agrandit le sprite de faire comme vous faites ...

    Dur a voir, mais meme en sautant, on se fait toucher par l'ennemi ...
    J'ai ramasse un rubis, j'ai gagne de la vie ... je crois
    Peut etre un switch case qui manque un break. Enfin toujours pas gagne d'argent et pas de son pour le rubis (des sous sous)

    Pas mal le truc des dialogues ... en plus avec une image.

    Les collisions ennemie/joueur sont sensibles (un peu trop) ... on peut faire un decalage de -10%

    La detection de la chute aussi est ultra sensible ... dans le zelda de base on peut eviter de tomber(avec un peu de chance). Il y avait bien une attraction ... mais si on reagissait on ne tombait pas.

    Lorsque l'on tape des ennemies, il arrive que l'ennemie soit projete sur le joueur
    Projeter un objet sur un ennemi ne le touche pas...

    J'ai fini le donjon \o/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  17. #97
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Pour le saut, je sais qu'ils utilisaient des sprites mais vu que je n'ai pas ces sprites et que je suis nul en design, j'ai tenté de le faire par rotation même si c'est plus couteux niveau mémoire.
    Ne peux tu pas faire la rotation dans un logiciel de traitement d'image et enregistrer en sprite? avec Gimp ça doit être facilement faisable.
    Homer J. Simpson


  18. #98
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Dur a voir, mais meme en sautant, on se fait toucher par l'ennemi ...
    Cela me semble normal, dans les zelda on ne peut pas sauter par dessus les ennemies d'après mes souvenirs
    Citation Envoyé par LittleWhite Voir le message
    J'ai ramasse un rubis, j'ai gagne de la vie ... je crois
    Peut etre un switch case qui manque un break. Enfin toujours pas gagne d'argent et pas de son pour le rubis (des sous sous)
    Oui exact, j'avais plutôt blindé le code pour que ce soit toujours un coeur de gagné ^^
    Citation Envoyé par LittleWhite Voir le message
    Pas mal le truc des dialogues ... en plus avec une image.
    Merci
    Citation Envoyé par LittleWhite Voir le message
    Les collisions ennemie/joueur sont sensibles (un peu trop) ... on peut faire un decalage de -10%
    Oui je suis d'accord j'ai beaucoup de mal avec les collisions et pour l'instant je suis sevère sur l'ensemble des collisions mais j'essayerais d'améliorer ca
    Citation Envoyé par LittleWhite Voir le message
    La detection de la chute aussi est ultra sensible ... dans le zelda de base on peut eviter de tomber(avec un peu de chance). Il y avait bien une attraction ... mais si on reagissait on ne tombait pas.
    Je n'ai pas reproduit l'attraction car perso j'aime pas ce concept quand on tombe on tombe et puis c'est pas facile à coder
    Pour la sensibilité, c'est vrai que c'est ultra sensible j'ai donc corrigé mes détections à 3px près
    Citation Envoyé par LittleWhite Voir le message
    Lorsque l'on tape des ennemies, il arrive que l'ennemie soit projete sur le joueur
    Ouais je sais pas pourquoi
    Citation Envoyé par LittleWhite Voir le message
    Projeter un objet sur un ennemi ne le touche pas...
    Un gros bug qui est corrigé, merci pour le rapport.
    Citation Envoyé par LittleWhite Voir le message
    J'ai fini le donjon \o/
    Ouah trop fort
    Avec un boss qui meurt du premier coup....
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  19. #99
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Astraya Voir le message
    Ne peux tu pas faire la rotation dans un logiciel de traitement d'image et enregistrer en sprite? avec Gimp ça doit être facilement faisable.
    Le problème n'est pas la rotation car ca marche c'est juste trouver le bon mouvement pour un saut dans les directions HAUT et BAS sans utiliser de sprites si possible.
    Sinon j'utiliserais des sprites mais ma designeuse va pas être contente !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  20. #100
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Lorsque l'on tape des ennemies, il arrive que l'ennemie soit projete sur le joueur
    Ce bug est super chiant !

    Sinon j'ai finit le donjon et à part ce qui à déjà été dit je n'ai trouvé qu'un problème.

    Dans la salle dont le sol s'écroule,une fois que le téléporteur est apparue, si on le prend puis le reprend pour revenir, le sol de la salle n'est plus effondré.

    Je sais pas si je suis très clair.

    Sinon, c'est vraiment du super taf Continue comme ça !

Discussions similaires

  1. [Projet terminé] mon remake de Crazy Cars sur PC et Megadrive
    Par barbarian.1987 dans le forum Projets
    Réponses: 2
    Dernier message: 31/07/2014, 17h36
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  3. [Kylix] Kylix embarqué sur PDA ?
    Par Anonymous dans le forum NoSQL
    Réponses: 10
    Dernier message: 29/11/2002, 13h59
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. F.A.Q, Doc, cours, tutoriels sur JBuilder
    Par Ricky81 dans le forum JBuilder
    Réponses: 0
    Dernier message: 14/03/2002, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo