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