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

MFC Discussion :

[DirectX]Ordre de destruction + conseil orga du code


Sujet :

MFC

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    D�tails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Par d�faut [resolu][DirectX]Ordre de destruction + conseil orga du code
    salut !

    Depuis un petit moment, je developpe avec directdraw. tous marchait bien, grace a vos corrections, jusqu'a ce midi.

    Avant de partir pour aller manger, je compile, execute mon programme. aucun probleme. Je reviens, et me dit que tous les deletes commecent a peser en ligne => je fais une macro :

    #define DELETE_ALL delete XX;delete YY;....

    puis je l'appel. Ca compil puis lorsque je quitte le programme, violation d'acc�s. je ne comprend pas pourquoi, mais jedecide de revenir a la forme pr�cedente. Rien n'y fait. j'ai toujours ces erreurs.

    De plus, si mes j'organise mes delete comme cela:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    delete DDMaster;
    delete Ft;
    delete Balle;
    => l'instruction a l'adresse 0x00120193 emploie l'adresse 0x88131479 : la memoire ne peut etre "written".
    alros que le code de mes Dtor est juste de simple "ObjetDD->Release(); ObjetDD = NULL".

    Si j'organise mes delete comme cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    delete DDMaster;
    //delete Ft  // en commentaire pour voir si l'erreur ne vient pas Balle
    delete Balle
    => l'intruction "0x00000000" emploie l'adresse "0x00000000". la memoire ne peut etre "written"

    Je ne comprend rien. et ca m'enerve, parce que tous marchait bien.
    merci.

  2. #2
    mat.M
    Invit�(e)
    Par d�faut
    Avant de partir pour aller manger, je compile, execute mon programme. aucun probleme. Je reviens, et me dit que tous les deletes commecent a peser en ligne => je fais une macro :
    C'est parce que le poisson n'�tait pas frais


    * attention si tu emploies de surfaces basculantes ,une principale que tu affiches avec Flip et une autre Off , il faut effacer tjs la surface attach�e d'abord et la primaire apr�s.
    *tjs effacer les objets DDraw dans leur ordre de cr�ation donc les surfaces d'abord et l'objet principal DDraw apr�s
    * qu'est ce que contient les destructeurs ? Si tu fais surface->Release et que plantage c'est que la surface est �gale � NULL ( tu as affect� NULL avant )->d�boguage si possible

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    D�tails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Par d�faut
    *tjs effacer les objets DDraw dans leur ordre de cr�ation donc les surfaces d'abord et l'objet principal DDraw apr�s
    Effectivement, ce detail, que je ne connaissai pas a r�gl� mon probleme. Mais je ne comprnd pas pourquoi avant, ca marchais sans generer d'erreur.

    Sinon, toit qui m'a l'air "call�" dans le DirectDraw, peux-tu me conseiller ?
    Developper un jeu, meme petit demande un code assez lourd (en lignes).
    j'ai organis� en classe ma programmation. Cepedant, la j'ai un nombre definie de sprites, mais comment faire lorsqu'il y en un nombre indetermin� (RPG par exemples) ?
    De plus, je compte re-faire de A a Z mon code afin de l'organiser comme suit :

    classe mere contenant les op�ration de bases en DirectDraw (chargement d'image, configuration de l'affichage, etc...)
    Classe d�riv� de la m�re pour chaque sprite (il y en a peu)

    qu'en penses-tu ? le code a la fin sera-t-il propre ?

    Dans el cas ou le nombre de sprites (monstres par exemples) est inconnus, je pense faire pareil maisla classe d�riv� serait une listedoublement chain�e, est-ce correct ? l�ger ou lourd ?

    merci.

    ps : je m'adresses a Addicted_to_mfc mais bien evidemment, participez a la discussion quand meme si vous le desirez

  4. #4
    mat.M
    Invit�(e)
    Par d�faut
    j'ai organis� en classe ma programmation. Cepedant, la j'ai un nombre definie de sprites, mais comment faire lorsqu'il y en un nombre indetermin� (RPG par exemples) ?
    Grand classique : il faut avoir recours � des listes cha�n�es.

    La litt�rature est plus qu'abondante ( voir sur developpez.com) � ce sujet
    Par exemple on peut d�finir une structure comme ( en CPP )
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct sprite {
    int positionX;
    int positionY;
    bool vivant;
    int PointsVie;
    sprite *p_suivant;
    }
    etc...
    Classe d�riv� de la m�re pour chaque sprite (il y en a peu)
    S'il ya quelques classes seulement oui on peut utiliser l'h�ritage ou non.

    Dans el cas ou le nombre de sprites (monstres par exemples) est inconnus, je pense faire pareil maisla classe d�riv� serait une listedoublement chain�e, est-ce correct ? l�ger ou lourd ?
    C'est pour cela que avoir recours � l'h�ritage de classe ce n'est pas forc�ment une solution ...quoique Quake par ex. soit bati la dessus ( plut�t un h�ritage simple )
    et en plus �a peut peut-�tre p�naliser la vitesse d'ex�cution...

    L'h�ritage c'est en g�n�ral utilis� lorsqu'on veut faire h�riter des propri�t�s d'un objet et fournir par cons�quent une interface � d'autres objets.
    Mais �a peut-�tre complexe � g�rer.
    Et qui dit complexit� dit ralentissement �ventuel en ex�cution.

    RPG par exemples)
    H� h� je d�veloppe un moteur de jeu en 2d iso avec listes de sprites justement , scrolling des tuiles ....

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    D�tails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Par d�faut
    ok.
    Donc sous-entends-tu que pour chaque classe, il me faut r�-�crire les fonctions ?

    merci.

  6. #6
    mat.M
    Invit�(e)
    Par d�faut
    Donc sous-entends-tu que pour chaque classe, il me faut r�-�crire les fonctions ?
    non pas forc�ment ; chacun cr�e son projet comme bon lui semble.
    Pourvu que �a soit un minimum organis�

  7. #7
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    D�tails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Par d�faut
    ok et merci des renseignements.
    Mais sache que l'organisation et la possibilit� de relire ais�ment mon code, pour qui que ce soit (puisque c'est de l'open source) m'importe bezaucoup.

    merci encoe.

  8. #8
    mat.M
    Invit�(e)
    Par d�faut
    Mais sache que l'organisation et la possibilit� de relire ais�ment mon code, pour qui que ce soit (puisque c'est de l'open source)
    On attend de voir la touche finale alors

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Curseurs de d�filement : conseil sur du code
    Par Invit� dans le forum Qt
    R�ponses: 4
    Dernier message: 19/03/2015, 21h22
  2. Premi�re interface Swing conseil pour un code propre
    Par bastou93 dans le forum AWT/Swing
    R�ponses: 0
    Dernier message: 01/02/2013, 16h34
  3. besoin conseil pour finir code
    Par zitoune31 dans le forum VB.NET
    R�ponses: 4
    Dernier message: 09/03/2011, 02h42
  4. [Conseils] Tester un code Java ?
    Par LP-mpascolo dans le forum EDI et Outils pour Java
    R�ponses: 4
    Dernier message: 21/02/2007, 20h43
  5. [Conseil] revue de code
    Par allstar dans le forum Langage
    R�ponses: 2
    Dernier message: 09/11/2005, 11h02

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