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. #121
    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 fearyourself Voir le message
    Visiblement t'as un facteur de 1000, tu le calcules comment ?

    D'ailleurs, tes sources sont disponibles ?
    Jc
    Très facile, je ne le calcule pas justement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << "\tClock pour timer : " << CLOCKS_PER_SEC;
    C'est la constante native clocks_per_sec qui change en fonction de l'OS...

    Sinon, désolé mais les sources ne sont pas disponibles

    Pour ton rapport de valgrind, c'est bizarre tu as utilisé quelle commande pour le débogguer ?
    J'utilise :
    valgrind --leak-check=full -v ./Zeldaa
    sachant que je suis en machine virtuelle.
    Et j'ai le rapport suivant juste au lancement du jeu (en appuyant sur échap pour quitter le jeu proprement) :
    ==10821== HEAP SUMMARY:
    ==10821== in use at exit: 159,004 bytes in 1,394 blocks
    ==10821== total heap usage: 42,955 allocs, 41,561 frees, 41,087,429 bytes allocated
    ==10821==
    ==10821== Searching for pointers to 1,394 not-freed blocks
    ==10821== Checked 761,692 bytes
    ==10821==
    ==10821== 18 bytes in 3 blocks are definitely lost in loss record 19 of 120
    ==10821== at 0x4025BD3: malloc (vg_replace_malloc.c:236)
    ==10821== by 0x450FF26: XKeysymToString (in /usr/lib/libX11.so.6.3.0)
    ==10821== by 0x412EA68: _xwin_get_keyboard_mapping (in /usr/local/lib/liballeg-4.2.3.so)
    ==10821==
    ==10821== 24 bytes in 4 blocks are definitely lost in loss record 28 of 120
    ==10821== at 0x4025BD3: malloc (vg_replace_malloc.c:236)
    ==10821== by 0x450FF26: XKeysymToString (in /usr/lib/libX11.so.6.3.0)
    ==10821== by 0x412D7C9: ??? (in /usr/local/lib/liballeg-4.2.3.so)
    ==10821==
    ==10821== LEAK SUMMARY:
    ==10821== definitely lost: 42 bytes in 7 blocks
    ==10821== indirectly lost: 0 bytes in 0 blocks
    ==10821== possibly lost: 0 bytes in 0 blocks
    ==10821== still reachable: 158,962 bytes in 1,387 blocks
    ==10821== suppressed: 0 bytes in 0 blocks
    ==10821== Reachable blocks (those to which a pointer was found) are not shown.
    ==10821== To see them, rerun with: --leak-check=full --show-reachable=yes
    ==10821==
    ==10821== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 54 from 15)
    --10821--
    --10821-- used_suppression: 54 dl-hack3-cond-1
    ==10821==
    ==10821== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 54 from 15)
    Il y a deux erreurs provenant d'allegro mais d'après le forum officiel, ce sont des faux-positifs

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Il y a deux erreurs provenant d'allegro mais d'après le forum officiel, ce sont des faux-positifs
    Ouep ... Allegro et la SDL sont quelques peu assez moche. Peut être faudrait il voir une option en plus de valgrind pour que cela soit bien géré (enfin, un peu mieux) comme on peut le faire avec GLib ... enfin bref ...

    valgrind --leak-check=full -v ./Zeldaa
    C'est pas assez comme le dit valgrind lui même:
    To see them, rerun with: --leak-check=full --show-reachable=yes
    - La font des textes est horrible, je sais mais les fonts avec Allegro c'est la galère pas possible car c'est très mal géré !
    Pour les caractères accentués, on peut soit:
    - Les oubliés (ne pas en mettre :p)
    - Utiliser une bitmap police (soit, un tableau de caractère dans une image BMP)
    D'ailleurs, cela permettra d'utiliser un truc mal géré

    Maintenant ... le test (GNU/Linux)

    Argh ... pas lanceable par double clic, car pas marqué par executable -> chmod u+x ./Zeldaa

    Argh ... il me faut allegro
    ./Zeldaa: error while loading shared libraries: liballeg.so.4.2: cannot open shared object file: No such file or directory
    C'est comme pour FMOD, faut les mettre :p

    Ah zut ... je viens de comprendre. Vous avez du compiler tout cela en 32bits, alors que je n'ai pas de support 32bits ... Source ?

  3. #123
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Il ne veut pas rendre les sources accessibles.

    Pourquoi d'ailleurs?

    Jc

  4. #124
    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
    Je ne souhaite pas mettre les sources uniquement parce qu'on ne respecte pas de nos jours les droits d'auteur et que les gens volent les sources des autres et se les appropries... C'est triste même avec des licences GNU/GPL... ca ne sert à rien

    Sinon, je n'ai rien contre le partage de sources, bien au contraire
    Bon allez, je mets les sources....
    http://www.tutoworld.com/temp/source_zelda.zip (j'espère que ca vous aidera à m'aider à corriger les erreurs)

    Il y a le makefile de LittleWhite dedans pour compiler sous Linux. Je pense que la librairie fmod est déjà dans les sources, par contre il faudra installer Allegro 4.2.3 et Alfont si ce n'est déjà fait.

    En parlant de droits, j'ai récemment récupéré la classe logger de LittleWhite de son projet Open A Wars, j'espère que ca ne le dérange pas... (le fichier s'appelle log/logger.h)

    Concernant Valgrind, je ne sais pas comment lire les erreurs avec l'option "show-reachable=yes " et surtout à quoi elles correspondent et comment les corriger
    Donc si quelqu'un pouvait m'expliquer

    Et les fonts, oui je vais certainement utiliser une planche c'était dans mon idée.

    Pour les librairies, il faut installer Alfont, Allegro 4.2.3 et fmod 3.75

    PS : Je sais que le code n'est pas très bon, je rappelle que je ne suis pas codeur en C++ de base

    Merci

  5. #125
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    et bienvenue au monde de l'OpenSource. A la fin de la journée, tu dois te demander si cela est vraiment important que quelqu'un te pique ou non ton code ? Qu'est-ce que cela change vraiment ?

    Par contre, quand je tente de compiler, j'obtiens ceci :
    zeroc@Demonia:~/tmp/zelda$ make
    g++ items/item.cpp -> items/item.o
    In file included from items/item.h:4,
    from items/item.cpp:1:
    items/../fonctions.h:22:24: error: log\logger.h: No such file or directory
    items/../fonctions.h:23:22: error: log\font.h: No such file or directory
    items/item.cpp: In member function ‘void t_item::setNombre(int)’:
    items/item.cpp:68: error: ‘LInfo’ was not declared in this scope
    items/item.cpp:70: error: ‘LInfo’ was not declared in this scope
    Car c'est / et non \ pour les includes sous linux. Windows l'autorise mais linux non. Il vaut mieux donc faire / pour que les deux fonctionnent.

    T'as aussi cle.h qui pose des soucis. Moi je fais des -I dans le compilateur et je ne mets pas les répertoires.

    Ensuite, j'avais un souci avec alfont, donc j'ai du le télécharger et le compiler (encore un souci, j'ai du modifier des trucs pour que cela fonctionne... ...)

    Bon c'est bon, j'ai une version qui tourne on dirait. Le jeu fonctionne mais mon valgrind n'aime vraiment pas allegro car il plante au départ avec valgrind or sans, ca marche... A savoir... Je testerai sur une autre machine.

    Jc

  6. #126
    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
    C'est bizarre, pourquoi n'ai je pas eu ces erreurs lors de ma compilation sous Ubuntu 10.10 ?
    Ma version de GCC est :
    gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
    Pour valgrind, si tu as une segsev au démarrage, je sais pourquoi, j'ai perdu une semaine sur ce problème, apparemment il faut compiler allegro sans le mode asm (http://www.allegro.cc/forums/thread/605548).
    J'ai uploadé le fichier SO d'Allegro compilé sous ma machien virtuelle qui fonctionne avec Valgrid :
    http://www.tutoworld.com/temp/liballeg-4.2.3.so

  7. #127
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Je ne souhaite pas mettre les sources uniquement parce qu'on ne respecte pas de nos jours les droits d'auteur et que les gens volent les sources des autres et se les appropries... C'est triste même avec des licences GNU/GPL... ca ne sert à rien
    Les licences GNU/GPL permettent de laisser le "piquage de code" mais de forcer à avoir son nom dans le projet qui en reprenne le code. Si cela n'est pas fait, vous pouvez avoir le droit de revendiquer la paternité ... et les compagnies font très attention à cela.
    Après, faut aussi voir que l'Open Source (et je ne parle pas encore des logiciels libre qui est une autre philosophie) vous n'allez surement pas finir avec un code miraculeux qui peut faire le café. Ce que je veux dire, c'est que nos codes, tout le monde peut le faire ... alors qu'il soit fermé, ou ouvert ...
    Pour un logiciel libre (code ouvert + droit de modification et je ne sais plus quoi) il y a aussi un avantage, c'est la création d'une communauté autour, ... des gens pour amélioré le code et autre élément du jeu ça peut aidé.

    [quote]
    Sinon, je n'ai rien contre le partage de sources, bien au contraire
    Bon allez, je mets les sources....
    http://www.tutoworld.com/temp/source_zelda.zip (j'espère que ca vous aidera à m'aider à corriger les erreurs)|/quote]
    Merci L'autre solution était de faire en sorte de produire une version 64bits pour les raleurs comme moi. Je crois que cela pouvait ce faire en rajoutant -m64 dans les options du compilateur G++ ... mais je ne sais pas comment il le gère avec les bibliothèques.

    Il y a le makefile de LittleWhite dedans pour compiler sous Linux. Je pense que la librairie fmod est déjà dans les sources, par contre il faudra installer Allegro 4.2.3 et Alfont si ce n'est déjà fait.
    Note: J'avais bien les bibliothèques hier ... juste qu'il m'aurait fallu une installation de tout le support 32bits

    En parlant de droits, j'ai récemment récupéré la classe logger de LittleWhite de son projet Open A Wars, j'espère que ca ne le dérange pas... (le fichier s'appelle log/logger.h)
    Il n'y a pas de problème comme le dit la licence que j'utilise. Il faut juste qu'il y ai une mention dans votre projet (dans le code), et je crois dans le ReadME :p. Note: Si, il y a un petit piège:
    [quote=Wikipedia
    La quatrième liberté passe par un choix : la deuxième autorisant de modifier un programme, il n'est pas de tenu de publier une version modifiée tant qu'elle est pour un usage personnel ; par contre, en cas de distribution d'une version modifiée, la quatrième liberté amène l'obligation que les modifications soient retournées à la communauté sous la même licence.
    [/quote]
    Dans le cas que vous distribuez votre programme ... il devrait être sous même licence que mon code \ o /

    D'ailleurs, vous avez enlever la licence et la référence à moi même dans le code du logger ...


    Bon c'est bon, j'ai une version qui tourne on dirait. Le jeu fonctionne mais mon valgrind n'aime vraiment pas allegro car il plante au départ avec valgrind or sans, ca marche... A savoir... Je testerai sur une autre machine.
    J'avais déjà eu des problèmes avec valgrind, et je pense en avoir parlé avec Aspic Malheureusement, je ne me rappelle plus de la conclusion ..

    Bon maintenant je me lance \ o /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    remove("fuites_memoire.txt");
     
        remove("fuites_malloc.txt");
    ça dans le main.cpp c'est étonnant ... a moins que les fichiers soient crée par le jeu en lui même ...
    Et puis, le main.cpp est trop gros (il gère trop de chose)

    La dépendance me semble vraiment boiteuse ... un truc qui n'est pas dans les paquets d'une distribution comme Ubuntu ...

    Bon j'ai réussi à compiler (même remarque que fearyourself). J'ai désactivé tout FMOD car il n'existe pas de version 64bits de celle ci ...

    Wouah déjà ... beau boulot. Notamment pour les pancarte avec une image et du texte :clap:
    Sinon, lorsque l'on sort l'épée ... l'apparition des objets dans les buissons est bizarre je trouve ...
    On ne peut pas tailler les herbes ...
    Les objets apparues (coeur / rubis) ne disparaissent pas
    Dans la citadelle, la pancarte de la Taverne est traversable
    Je peux marche dans l'eau profonde de la citadelle \ o /
    Dans les donjons, les compteurs de clé dans l'écran principale ne serait pas de refus
    Les clignotements (ennemies ou joueurs) sont horriblement long (bug de la gestion du temps j'imagine ...)
    L'escalier du donjon qui se crée lorsque l'on apparait \ o /

    J'ai mouru, le jeu à crasher \ o /
    *** glibc detected *** ./Zeldaa: munmap_chunk(): invalid pointer: 0x00000000004ca3ff ***
    ======= Backtrace: =========
    /lib/libc.so.6(+0x775b6)[0x7f7441b6b5b6]
    ./Zeldaa[0x46a5b0]
    ./Zeldaa[0x4136b7]
    ./Zeldaa[0x41377d]
    ./Zeldaa[0x467af2]
    /lib/libc.so.6(__libc_start_main+0xfd)[0x7f7441b12c4d]
    ./Zeldaa[0x404799]
    ======= Memory map: ========
    00400000-00508000 r-xp 00000000 08:06 456488 /tmp/source_zelda/Zeldaa
    00708000-00709000 r--p 00108000 08:06 456488 /tmp/source_zelda/Zeldaa
    00709000-0070a000 rw-p 00109000 08:06 456488 /tmp/source_zelda/Zeldaa
    0070a000-0070c000 rw-p 00000000 00:00 0
    00e67000-02c01000 rw-p 00000000 00:00 0 [heap]
    7f7438000000-7f7438753000 rw-p 00000000 00:00 0
    7f7438753000-7f743c000000 ---p 00000000 00:00 0
    7f743de0b000-7f743de0c000 ---p 00000000 00:00 0
    7f743de0c000-7f743e60c000 rwxp 00000000 00:00 0
    7f743e60c000-7f743e60d000 ---p 00000000 00:00 0
    7f743e60d000-7f743ee0d000 rwxp 00000000 00:00 0
    7f743ee0d000-7f743ee1f000 r-xp 00000000 08:06 136373 /usr/lib/libjack.so.0.0.28
    7f743ee1f000-7f743f01e000 ---p 00012000 08:06 136373 /usr/lib/libjack.so.0.0.28
    7f743f01e000-7f743f01f000 r--p 00011000 08:06 136373 /usr/lib/libjack.so.0.0.28
    7f743f01f000-7f743f021000 rw-p 00012000 08:06 136373 /usr/lib/libjack.so.0.0.28
    7f743f021000-7f743f029000 rw-p 00000000 00:00 0
    7f743f029000-7f743f02c000 r-xp 00000000 08:06 134694 /usr/lib/allegro/4.2.2/alleg-jackdigi.so
    7f743f02c000-7f743f22b000 ---p 00003000 08:06 134694 /usr/lib/allegro/4.2.2/alleg-jackdigi.so
    7f743f22b000-7f743f22c000 r--p 00002000 08:06 134694 /usr/lib/allegro/4.2.2/alleg-jackdigi.so
    7f743f22c000-7f743f22d000 rw-p 00003000 08:06 134694 /usr/lib/allegro/4.2.2/alleg-jackdigi.so
    7f743f22d000-7f743f22f000 r-xp 00000000 08:06 134402 /usr/lib/allegro/4.2.2/alleg-alsamidi.so
    7f743f22f000-7f743f42e000 ---p 00002000 08:06 134402 /usr/lib/allegro/4.2.2/alleg-alsamidi.so
    7f743f42e000-7f743f42f000 r--p 00001000 08:06 134402 /usr/lib/allegro/4.2.2/alleg-alsamidi.so
    7f743f42f000-7f743f430000 rw-p 00002000 08:06 134402 /usr/lib/allegro/4.2.2/alleg-alsamidi.so
    7f743f430000-7f743f437000 r-xp 00000000 08:06 32424 /lib/librt-2.11.1.so
    7f743f437000-7f743f636000 ---p 00007000 08:06 32424 /lib/librt-2.11.1.so
    7f743f636000-7f743f637000 r--p 00006000 08:06 32424 /lib/librt-2.11.1.so
    7f743f637000-7f743f638000 rw-p 00007000 08:06 32424 /lib/librt-2.11.1.so
    7f743f638000-7f743f712000 r-xp 00000000 08:06 135850 /usr/lib/libasound.so.2.0.0
    7f743f712000-7f743f912000 ---p 000da000 08:06 135850 /usr/lib/libasound.so.2.0.0
    7f743f912000-7f743f918000 r--p 000da000 08:06 135850 /usr/lib/libasound.so.2.0.0
    7f743f918000-7f743f919000 rw-p 000e0000 08:06 135850 /usr/lib/libasound.so.2.0.0
    7f743f919000-7f743f91d000 r-xp 00000000 08:06 134401 /usr/lib/allegro/4.2.2/alleg-alsadigi.so
    7f743f91d000-7f743fb1c000 ---p 00004000 08:06 134401 /usr/lib/allegro/4.2.2/alleg-alsadigi.so
    7f743fb1c000-7f743fb1d000 r--p 00003000 08:06 134401 /usr/lib/allegro/4.2.2/alleg-alsadigi.so
    7f743fb1d000-7f743fb1e000 rw-p 00004000 08:06 134401 /usr/lib/allegro/4.2.2/alleg-alsadigi.so
    7f743fb1e000-7f743fb24000 r-xp 00000000 08:06 135819 /usr/lib/libXxf86dga.so.1.0.0
    7f743fb24000-7f743fd23000 ---p 00006000 08:06 135819 /usr/lib/libXxf86dga.so.1.0.0
    7f743fd23000-7f743fd24000 r--p 00005000 08:06 135819 /usr/lib/libXxf86dga.so.1.0.0
    7f743fd24000-7f743fd25000 rw-p 00006000 08:06 135819 /usr/lib/libXxf86dga.so.1.0.0
    7f743fd25000-7f743fd2a000 r-xp 00000000 08:06 134400 /usr/lib/allegro/4.2.2/alleg-dga2.so
    7f743fd2a000-7f743ff2a000 ---p 00005000 08:06 134400 /usr/lib/allegro/4.2.2/alleg-dga2.so
    7f743ff2a000-7f743ff2b000 r--p 00005000 08:06 134400 /usr/lib/allegro/4.2.2/alleg-dga2.so
    7f743ff2b000-7f743ff2c000 rw-p 00006000 08:06 134400 /usr/lib/allegro/4.2.2/alleg-dga2.so
    7f743ff2c000-7f743ff2d000 rw-p 00000000 00:00 0
    7f743ff2d000-7f743ff31000 r-xp 00000000 08:06 134399 /usr/lib/allegro/4.2.2/alleg-fbcon.so
    7f743ff31000-7f7440131000 ---p 00004000 08:06 134399 /usr/lib/allegro/4.2.2/alleg-fbcon.so
    7f7440131000-7f7440132000 r--p 00004000 08:06 134399 /usr/lib/allegro/4.2.2/alleg-fbcon.so
    7f7440132000-7f7440133000 rw-p 00005000 08:06 134399 /usr/lib/allegro/4.2.2/alleg-fbcon.so
    7f7440133000-7f7440134000 rw-p 00000000 00:00 0
    7f7440134000-7f7440139000 r-xp 00000000 08:06 135781 /usr/lib/libXdmcp.so.6.0.0
    7f7440139000-7f7440338000 ---p 00005000 08:06 135781 /usr/lib/libXdmcp.so.6.0.0
    7f7440338000-7f7440339000 r--p 00004000 08:06 135781 /usr/lib/libXdmcp.so.6.0.0
    7f7440339000-7f744033a000 rw-p 00005000 08:06 135781 /usr/lib/libXdmcp.so.6.0.0
    7f744033a000-7f744033c000 r-xp 00000000 08:06 135770 /usr/lib/libXau.so.6.0.0
    7f744033c000-7f744053c000 ---p 00002000 08:06 135770 /usr/lib/libXau.so.6.0.0
    7f744053c000-7f744053d000 r--p 00002000 08:06 135770 /usr/lib/libXau.so.6.0.0
    7f744053d000-7f744053e000 rw-p 00003000 08:06 135770 /usr/lib/libXau.so.6.0.0
    7f744053e000-7f7440559000 r-xp 00000000 08:06 136776 /usr/lib/libxcb.so.1.1.0
    7f7440559000-7f7440758000 ---p 0001b000 08:06 136776 /usr/lib/libxcb.so.1.1.0
    7f7440758000-7f7440759000 r--p 0001a000 08:06 136776 /usr/lib/libxcb.so.1.1.0
    7f7440759000-7f744075a000 rw-p 0001b000 08:06 136776 /usr/lib/libxcb.so.1.1.0
    7f744075a000-7f744075f000 r-xp 00000000 08:06 135785 /usr/lib/libXfixes.so.3.1.0
    7f744075f000-7f744095e000 ---p 00005000 08:06 135785 /usr/lib/libXfixes.so.3.1.0
    7f744095e000-7f744095f000 r--p 00004000 08:06 135785 Shutting down Allegro due to signal #6
    Aborted
    Bon un coup de valgrind maitenant ...
    J'arrive à le lancer \ o / sans crash et à aller au menu ... donc test du menu ...
    Valgrind sans option:
    ==4402== Conditional jump or move depends on uninitialised value(s)
    ==4402== at 0x43032C: t_son::~t_son() (son.cpp:16)
    ==4402== by 0x44ED24: void Delete::operator()<t_son>(t_son*&) const (fonctions.h:36)
    ==4402== by 0x44DEC3: Delete std::for_each<__gnu_cxx::__normal_iterator<t_son**, std::vector<t_son*, std::allocator<t_son*> > >, Delete>(__gnu_cxx::__normal_iterator<t_son**, std::vector<t_son*, std::allocator<t_son*> > >, __gnu_cxx::__normal_iterator<t_son**, std::vector<t_son*, std::allocator<t_son*> > >, Delete) (stl_algo.h:4200)
    ==4402== by 0x459670: t_hero::~t_hero() (hero.cpp:85)
    ==4402== by 0x467AC3: main (main.cpp:823)
    ==4402==
    ==4402== Conditional jump or move depends on uninitialised value(s)
    ==4402== at 0x43032C: t_son::~t_son() (son.cpp:16)
    ==4402== by 0x42FFA7: t_animation::~t_animation() (animation.cpp:18)
    ==4402== by 0x4596C5: t_hero::~t_hero() (hero.cpp:89)
    ==4402== by 0x467AC3: main (main.cpp:823)
    ==4402==
    ==4402== Conditional jump or move depends on uninitialised value(s)
    ==4402== at 0x43032C: t_son::~t_son() (son.cpp:16)
    ==4402== by 0x42FFA7: t_animation::~t_animation() (animation.cpp:18)
    ==4402== by 0x4596E5: t_hero::~t_hero() (hero.cpp:90)
    ==4402== by 0x467AC3: main (main.cpp:823)
    ==4402==
    ==4402== Conditional jump or move depends on uninitialised value(s)
    ==4402== at 0x43032C: t_son::~t_son() (son.cpp:16)
    ==4402== by 0x42FFA7: t_animation::~t_animation() (animation.cpp:18)
    ==4402== by 0x459705: t_hero::~t_hero() (hero.cpp:91)
    ==4402== by 0x467AC3: main (main.cpp:823)
    ==4402==
    ==4402== Invalid free() / delete / delete[]
    ==4402== at 0x4C270BD: free (vg_replace_malloc.c:366)
    ==4402== by 0x46A5AF: alfont_destroy_font (in /tmp/source_zelda/Zeldaa)
    ==4402== by 0x4136B6: t_data::~t_data() (font.cpp:56)
    ==4402== by 0x41377C: t_data::deleteInstance() (font.cpp:73)
    ==4402== by 0x467AF1: main (main.cpp:828)
    ==4402== Address 0x4ca3ff is not stack'd, malloc'd or (recently) free'd
    ==4402==
    ==4402== Invalid free() / delete / delete[]
    ==4402== at 0x4C270BD: free (vg_replace_malloc.c:366)
    ==4402== by 0x46A5AF: alfont_destroy_font (in /tmp/source_zelda/Zeldaa)
    ==4402== by 0x4136CC: t_data::~t_data() (font.cpp:57)
    ==4402== by 0x41377C: t_data::deleteInstance() (font.cpp:73)
    ==4402== by 0x467AF1: main (main.cpp:828)
    ==4402== Address 0x4ca3ff is not stack'd, malloc'd or (recently) free'd
    ==4402==
    ==4402== Invalid free() / delete / delete[]
    ==4402== at 0x4C270BD: free (vg_replace_malloc.c:366)
    ==4402== by 0x46A5AF: alfont_destroy_font (in /tmp/source_zelda/Zeldaa)
    ==4402== by 0x4136E2: t_data::~t_data() (font.cpp:58)
    ==4402== by 0x41377C: t_data::deleteInstance() (font.cpp:73)
    ==4402== by 0x467AF1: main (main.cpp:828)
    ==4402== Address 0x4ca3ff is not stack'd, malloc'd or (recently) free'd
    ==4402==
    ==4402==
    ==4402== HEAP SUMMARY:
    ==4402== in use at exit: 189,377 bytes in 1,398 blocks
    ==4402== total heap usage: 175,101 allocs, 173,706 frees, 86,756,696 bytes allocated
    ==4402==
    ==4402== LEAK SUMMARY:
    ==4402== definitely lost: 42 bytes in 7 blocks
    ==4402== indirectly lost: 0 bytes in 0 blocks
    ==4402== possibly lost: 0 bytes in 0 blocks
    ==4402== still reachable: 189,335 bytes in 1,391 blocks
    ==4402== suppressed: 0 bytes in 0 blocks
    ==4402== Rerun with --leak-check=full to see details of leaked memory
    ==4402==
    ==4402== For counts of detected and suppressed errors, rerun with: -v
    ==4402== Use --track-origins=yes to see where uninitialised values come from
    ==4402== ERROR SUMMARY: 16 errors from 7 contexts (suppressed: 31 from 7)
    On voit des fuites (elles ne sont pas affichés). Et on voit des erreurs:
    ==4402== Invalid free() / delete / delete[]
    ça c'est une erreur, et les lignes qui suivent sont un backtrace d'où est l'erreur

    Sachant que toute erreur lié au fichier de son sont de ma faute à cause de suppression de code au hasard... :p

    La commande que j'utilise:
    valgrind --leak-check=full -v --leak-check=full ./Zeldaa
    ==5125== 24 bytes in 4 blocks are definitely lost in loss record 20 of 127
    ==5125== at 0x4C274A8: malloc (vg_replace_malloc.c:236)
    ==5125== by 0x6730809: XKeysymToString (in /usr/lib/libX11.so.6.3.0)
    ==5125== by 0x4F1C5A3: ??? (in /usr/lib/liballeg.so.4.2)
    ==5125== by 0x4F1D68A: _xwin_get_keyboard_mapping (in /usr/lib/liballeg.so.4.2)
    ==5125== by 0x4F1DAB6: ??? (in /usr/lib/liballeg.so.4.2)
    ==5125== by 0x4E9BBFE: install_keyboard (in /usr/lib/liballeg.so.4.2)
    ==5125== by 0x4604ED: initialiserAllegro(int, int, int) (fonctions.cpp:1080)
    ==5125== by 0x4672F5: main (main.cpp:675)
    Une fuite ... qui demarre de main.cpp ligne 675

    Voilà comment on lit valgrind. Après il faut traquer toute les erreurs, car ce que valgrind affiche est important

  8. #128
    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
    Pour l'entête du fichier logguer c'est bien ca que je dois mettre ?
    #ifndef DOXYGEN_IGNORE_TAG
    /**
    OpenAWars is an open turn by turn strategic game aiming to recreate the feeling of advance (famicon) wars (c)
    Copyright (C) 2010 Alexandre LAURENT

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    website: http://code.google.com/p/openawars/
    e-mail: lw.demoscene@gmail.com
    **/
    #endif
    Ok pour les bugs de maps, je vais corriger
    Par compris le bug :
    L'escalier du donjon qui se crée lorsque l'on apparait \ o /
    Effectivement, bug sur le timer avec Linux (pour l'instant je ne sais pas le corriger).

    Après avoir perdu la partie, le jeu a crashé avant ou après l'apparition du menu ?

    Concernant Valgrind, la dernière erreur que tu montres est une erreur de la fonction install_keyboard() d'allegro, je ne peux rien y faire

    Il y a des choses de bizarre, je n'ai pas du tout les mêmes infos de Valgrind que toi ou FearYourSelf... ca risque d'être difficile de corriger les erreurs si on a pas les mêmes sorties.
    Pouvez vous me dire vos versions respectives pour gcc et valgrind ?

    Aussi pourquoi deux fois leak-check dans ta commande ?
    valgrind --leak-check=full -v --leak-check=full ./Zeldaa
    Tu ne voulais pas dire show-reacheable=yes ?

    D'ailleurs comment corriger les erreurs dues à "show-reacheable=yes", car je ne comprends pas ce que c'est.

  9. #129
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    D'ailleurs, vous avez enlever la licence et la référence à moi même dans le code du logger ...
    Pas exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /****************
    Merci à LittleWhite du forum dvp
    http://www.developpez.net/forums/u240267/littlewhite/
    ****************/
    Mais :

    En fait, si tu utilises son logger, vu qu'il est en GPL, TOUT ton code est en GPL, telle est la régle du GPL.

    Jc

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par fearyourself Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /****************
    Merci à LittleWhite du forum dvp
    http://www.developpez.net/forums/u240267/littlewhite/
    ****************/
    Oui et non. Disons qu'une telle référence est possible. Mais je pense qu'il faut juste remettre l'entête de la licence et dire d'où vient le code + nom de l'auteur.
    Soit un truc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Code from OpenAWars developed by LittleWhite ; contact lw.demoscene@googlemail.com
    Ou un truc du genre.
    Même si la première référence fonctionnerai :p

    En fait, si tu utilises son logger, vu qu'il est en GPL, TOUT ton code est en GPL, telle est la régle du GPL.
    (Pour cela que j'ai choisi la GPL

    Après avoir perdu la partie, le jeu a crashé avant ou après l'apparition du menu ?
    Le crash apparait tout le temps chez moi, je crois.
    Je l'avais eu, en appuyant sur echap lors du GameOver ... mais il faut savoir que je n'avais pas pu partir du game over ...

    Tu ne voulais pas dire show-reacheable=yes ?
    Ah bah si

    ==15523== at 0x4C274A8: malloc (vg_replace_malloc.c:236)
    ==15523== by 0x4E8CD77: create_bitmap_ex (in /usr/lib/liballeg.so.4.2)
    ==15523== by 0x46068B: creerBitmap(int, int, int) (fonctions.cpp:1135)
    ==15523== by 0x45FE4F: chargerAnimation(int, int, int, int, char const*, bool, bool) (fonctions.cpp:936)
    ==15523== by 0x45FF67: chargerAnimation(int, int, int, int, std::string&, bool, bool) (fonctions.cpp:951)
    ==15523== by 0x413506: t_data::t_data() (font.cpp:47)
    ==15523== by 0x413724: t_data::init() (font.cpp:66)
    ==15523== by 0x467309: main (main.cpp:680)
    Voilà ce que je cherchais à avoir ... une belle fuite.

    Concernant Valgrind, la dernière erreur que tu montres est une erreur de la fonction install_keyboard() d'allegro, je ne peux rien y faire
    Il n'existe pas une fonction du genre deinstall ?

    L'escalier du donjon qui se crée lorsque l'on apparait \ o /
    Dans le donjon, on prend l'escalier on prend un escalier ... là, il y a un fade in ... et on voit le héros apparaitre ... ainsi que l'escalier ... ce qui surprend un peu.

  11. #131
    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
    Oui il existe remove_keyboard() mais on ne pourra plus jouer au clavier, un peu embêtant

    ==15523== at 0x4C274A8: malloc (vg_replace_malloc.c:236)
    ==15523== by 0x4E8CD77: create_bitmap_ex (in /usr/lib/liballeg.so.4.2)
    ==15523== by 0x46068B: creerBitmap(int, int, int) (fonctions.cpp:1135)
    ==15523== by 0x45FE4F: chargerAnimation(int, int, int, int, char const*, bool, bool) (fonctions.cpp:936)
    ==15523== by 0x45FF67: chargerAnimation(int, int, int, int, std::string&, bool, bool) (fonctions.cpp:951)
    ==15523== by 0x413506: t_data::t_data() (font.cpp:47)
    ==15523== by 0x413724: t_data::init() (font.cpp:66)
    ==15523== by 0x467309: main (main.cpp:680)
    Corrigé merci !

    Par contre, aucun crash au menu gameover, peux tu me dire exactement ce que tu as fait ?

    Si je comprends bien, les erreurs show-reacheable sous Valgrind sont aussi des fuites de mémoire ? (je pensais que c'était pas important au début)

    PS : Pour la licence, je laisse ton gros entête

  12. #132
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Oui il existe remove_keyboard() mais on ne pourra plus jouer au clavier, un peu embêtant
    Ou pas ... car c'est une fonction qui doit être appelé lorsque le jeu quitte (et perso, une fois que le jeu quitte, moi je me fous totalement si le jeu a accès au clavier )
    Donc la fonction doit belle et bien être appelé, donc c'était une vraie erreur :p

    Corrigé merci !
    Attention, j'en ai rapporté qu'une ... il y a en a surement d'autres

    Par contre, aucun crash au menu gameover, peux tu me dire exactement ce que tu as fait ?
    Fais moi, l'écran de game over ne veut pas partir. J'ai juste appuyé sur echap ... et pouf.

    Aller je suis sympa, je vais faire un coup de gdb (mon debuggueur ) sachant que pour produire le bug je fais:
    Demarrage jeu ( donc arrivé au menu)
    Appuyer sur echap
    gdb) bt
    #0 0x00007ffff6f8ba75 in *__GI_raise (sig=<value optimised out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
    #1 0x00007ffff6f8f5c0 in *__GI_abort () at abort.c:92
    #2 0x00007ffff6fc54fb in __libc_message (do_abort=<value optimised out>,
    fmt=<value optimised out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
    #3 0x00007ffff6fcf5b6 in malloc_printerr (action=3,
    str=0x7ffff70a2b78 "munmap_chunk(): invalid pointer",
    ptr=<value optimised out>) at malloc.c:6266
    #4 0x000000000046a5b0 in alfont_destroy_font ()
    #5 0x00000000004136b7 in ~t_data (this=0x749650,
    __in_chrg=<value optimised out>) at log/font.cpp:56
    #6 0x000000000041377d in t_data::deleteInstance () at log/font.cpp:73
    #7 0x0000000000467af2 in main (argc=1, argv=0x7fffffffe348) at main.cpp:828
    Voilà

    Si je comprends bien, les erreurs show-reacheable sous Valgrind sont aussi des fuites de mémoire ? (je pensais que c'était pas important au début)
    Et oui
    C'est tout les pointeurs qui n'ont pas été cleané et qui ont encore une variable qui les instancie (donc tout ce qui peut être cleané facilement, mais que cela a été oublié).

    Note:
    Bizarre l'inventaire dans lequel on ne peut pas se déplacer partout.

    Utilisez vous un éditeur ? ou c'est que de la retouche des fichier carte par Photoshop ?
    Pour les changements de carte Haut et Bas ... si je vais en haut + droite , ou bas + droite (enfin en diagonale), il ne me fait pas changer de carte .... essayez et vous comprendrai :p

    Le rebond des clé du donjon est toujours aussi bizarre ... un sinus donnera mieux je pense :p

    Dans le source, cela me dérange le mélange des dossiers du code et des dossiers des données ...
    Habituellement j'ai cette architecture:
    - Fichier du projet
    - Dossier Source
    - - enemies
    -Dossier data
    - - gfx
    - inc
    - lib

    Il manque des anims lorsque je fais l'épée tournoyante. On dirant que je vole

    Ah ah les teleporteurs et escaliers ont une boite de collision un peu petite
    Le jeu semble bloqué ... lorsque je récupère l'objet du donjon (l'instrument). Les animations fonctionnent, mais le joueur ne bouge plus du tout du tout :s (le compteur de FPS reste en état de marche)

  13. #133
    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
    Non pour le remove_keyboard(), allegro_exit() s'en charge automatiquement (cf doc). j'ai essayé de le mettre par acquis de conscience mais ca ne change rien, les fuites sont toujours là...

    Pour le crash, vous n'avez rien touché au fichier log/font.cpp ? J'ai fais quelques modifications qui corrigent des fuites, pouvez vous remplacer le code du fichier et me dire si ca plante toujours ?

    Nouveau fichier log/font.cpp :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #include "font.h"
     
    t_data* t_data::pInstance = NULL;
    ALFONT_FONT** t_data::tabFont = NULL;
    BITMAP*** t_data::tabFacesets = NULL;
    BITMAP** t_data::objets = NULL;
    BITMAP** t_data::objetsDonjon = NULL;
    BITMAP** t_data::objetsMunitions = NULL;
    BITMAP*** t_data::chiffres = NULL;
    BITMAP*** t_data::projectiles = NULL;
     
    t_data::t_data()
    {
        string path = PATH_MESSAGE;
        string pathObjet = PATH_OBJET;
        string tmp = path+"2.bmp";
     
        tabFont = (ALFONT_FONT**)malloc(3*sizeof(ALFONT_FONT*));
        //tabFont[0] = load_font("./font/police_accents.pcx", NULL, NULL);
        //tabFont[1] = load_font("./font/bold_italic.pcx", NULL, NULL);
     
        tabFont[0] = alfont_load_font("./font/lucon.ttf");
        tabFont[1] = alfont_load_font("./font/lcallig.ttf");
        tabFont[2] = alfont_load_font("./font/times.ttf");
     
        alfont_set_font_size(tabFont[0], TAILLE_TEXTE);
        alfont_set_font_size(tabFont[1], TAILLE_TEXTE);
        alfont_set_font_size(tabFont[2], TAILLE_TEXTE);
     
        if (!tabFont[0] || !tabFont[1] || !tabFont[2])
            err("Couldn't load font!");
     
        tabFacesets = chargerAnimation(4,4,48*2,48*2,tmp,true);
     
     
        // chargement des sprites d'objets
        tmp = pathObjet+"objets_overworld.bmp";
        objets = chargerAnimationSimpleHorizontale(20, TX, TY, tmp, false, false);
        tmp = pathObjet+"objets_munitions.bmp";
        objetsMunitions = chargerAnimationSimpleHorizontale(20, TX, TY, tmp, false, false);
        tmp = pathObjet+"objets_donjons.bmp";
        objetsDonjon = chargerAnimationSimpleHorizontale(20, TX, TY, tmp, false, false);
     
        tmp = "./font/chiffres.bmp";
        chiffres = chargerAnimation(4, 5, 16, 16, tmp, true, true);
        tmp = pathObjet+"projectiles16.bmp";
        projectiles = chargerAnimation(5,4,32,32,tmp, true);
    }
     
    t_data::~t_data()
    {
        libererMemoireMatriceBitmap(projectiles, 5, 4);
        libererMemoireMatriceBitmap(chiffres, 4, 5);
        libererMemoireBitmap(objetsDonjon , 20);
        libererMemoireBitmap(objetsMunitions, 20);
        libererMemoireBitmap(objets, 20);
        libererMemoireMatriceBitmap(tabFacesets, 4,4);
        alfont_destroy_font(tabFont[0]);
        alfont_destroy_font(tabFont[1]);
        alfont_destroy_font(tabFont[2]);
        free(tabFont);
    }
     
    t_data* t_data::init()
    {
        if (!pInstance)
        {
            pInstance = new t_data();
        }
    	return pInstance;
    }
     
    void t_data::deleteInstance()
    {
    	delete pInstance;
    	pInstance = NULL; // important, ne pas oublier !
    }
     
    ALFONT_FONT** t_data::getTabFont() { return tabFont; }
    BITMAP*** t_data::getFacesets() { return tabFacesets; }
    BITMAP** t_data::getObjets() { return objets;}
    BITMAP** t_data::getObjetsMunitions() { return objetsMunitions;}
    BITMAP** t_data::getObjetsDonjon() { return objetsDonjon;}
    BITMAP*** t_data::getProjectiles() { return projectiles; }
    BITMAP* t_data::getChiffres(int nbRubis, bool vert)
    {
        // convertir int en string
        string str = convertirIntToString(nbRubis);
        BITMAP* buffer = creerBitmapNormale(48, 16, makecol(255,249,189)); // couleur de fond du menu
     
        // construction de l'image
        int extra = 0;
        if (vert) extra = 2; // chiffre seront en vert
     
        unsigned int l = str.length();
        for (unsigned int i=0; i<l; i++)
        {
            int chiffre = atoi(str.substr(i, 1).c_str());
            dessiner(buffer, chiffres[chiffre/5+extra][chiffre%5], i*16, 0);
        }
     
        return buffer;
    }
    J'utilise photoshop pour les maps, pas d'éditeurs.

    Je vais voir pour toutes vos remarques.
    Bizarre l'histoire du blocage à la fin du donjon, normalement on doit se téléporter à l'entrée du donjon... (en tout cas chez moi ca marche...)

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Je viens de tenter avec votre fichier. Pas d'amélioration chez moi:
    gdb) bt
    #0 0x00007ffff6f8ba75 in *__GI_raise (sig=<value optimised out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
    #1 0x00007ffff6f8f5c0 in *__GI_abort () at abort.c:92
    #2 0x00007ffff6fc54fb in __libc_message (do_abort=<value optimised out>,
    fmt=<value optimised out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
    #3 0x00007ffff6fcf5b6 in malloc_printerr (action=3,
    str=0x7ffff70a2b78 "munmap_chunk(): invalid pointer",
    ptr=<value optimised out>) at malloc.c:6266
    #4 0x000000000046a630 in alfont_destroy_font ()
    #5 0x000000000041373f in ~t_data (this=0x73ad40,
    __in_chrg=<value optimised out>) at log/font.cpp:58
    #6 0x0000000000413805 in t_data::deleteInstance () at log/font.cpp:75
    #7 0x0000000000467b7a in main (argc=1, argv=0x7fffffffe348) at main.cpp:828

  15. #135
    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
    Je ne comprends pas on dirait qu'il ne charge pas les fonts chez vous...
    Le code plante sur cette ligne d'après votre trace d'exécution (fichier font.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alfont_destroy_font(tabFont[0]);
    Si vous la remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (tabFont[0]) alfont_destroy_font(tabFont[0]);
    ca donne quoi ?

    On est entrain de tester avec un ami en live, on arrive pas à reproduire votre erreur...

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Hum ... toujours pas.
    (gdb) bt
    #0 0x00007ffff6f8ba75 in *__GI_raise (sig=<value optimised out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
    #1 0x00007ffff6f8f5c0 in *__GI_abort () at abort.c:92
    #2 0x00007ffff6fc54fb in __libc_message (do_abort=<value optimised out>,
    fmt=<value optimised out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
    #3 0x00007ffff6fcf5b6 in malloc_printerr (action=3,
    str=0x7ffff70a2b78 "munmap_chunk(): invalid pointer",
    ptr=<value optimised out>) at malloc.c:6266
    #4 0x000000000046a650 in alfont_destroy_font ()
    #5 0x000000000041375e in ~t_data (this=0x7499b0,
    __in_chrg=<value optimised out>) at log/font.cpp:58
    #6 0x0000000000413825 in t_data::deleteInstance () at log/font.cpp:75
    #7 0x0000000000467b9a in main (argc=1, argv=0x7fffffffe348) at main.cpp:828
    Je propose un code plus comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void t_data::deleteInstance()
    {
        if ( pInstance ) delete pInstance;
        pInstance = NULL; // important, ne pas oublier !
    }
    Qui ne marche pas non plus ...

  17. #137
    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
    Delete ne plante pas sur un pointeur null d'après la doc
    Essayez de supprimer ces lignes (58 à 61) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alfont_destroy_font(tabFont[0]);
        alfont_destroy_font(tabFont[1]);
        alfont_destroy_font(tabFont[2]);
        free(tabFont);
    Certes, y'aura des fuites de mémoire mais je veux voir si ce sont ces lignes qui plantent...

    Sinon, je vous avoue que n'ayant pas l'erreur chez moi, difficile de débogguer à l'aveugle donc si vous avez plus d'infos sur l'erreur c'est pas de refus. D'ailleurs, vous avez modifiez quoi pour supprimer FMOD ? (c'est peut être un effet de bord)

  18. #138
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Sinon, je vous avoue que n'ayant pas l'erreur chez moi, difficile de débogguer à l'aveugle donc si vous avez plus d'infos sur l'erreur c'est pas de refus. D'ailleurs, vous avez modifiez quoi pour supprimer FMOD ? (c'est peut être un effet de bord)
    Bah, j'ai comment toute les lignes qui demande FMOD.
    (Soit, deux lignes dans le main, les lignes dans son.cpp et music.cpp)

    Pour l'erreur, je testerai ce soir

  19. #139
    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
    Ok donc à première vue pas de raison que ca plante dans font.cpp
    Tenez moi au courant, je vais essayer de creuser de mon côté

  20. #140
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 901
    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 901
    Points : 219 894
    Points
    219 894
    Billets dans le blog
    125
    Par défaut
    Je ne suis pas sur de comprendre pourquoi font.cpp se trouve dans le dossier log, mais bon. C'est un détail :p

    Pour votre "correction", j'ai testé ... ça ne crashe plus \ o /

    Le code suivant ne crashe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // if (tabFont[0]) alfont_destroy_font(tabFont[0]);
     
        // if (tabFont[1]) alfont_destroy_font(tabFont[1]);
     
        // if (tabFont[2]) alfont_destroy_font(tabFont[2]);
     
        free(tabFont);
    J'ose croire que c'est une corruption de mémoire (surement à cause des pointeurs)
    Je n'ai pas trouvé encore ... peut être dans la structure de ALFONT_FONT.

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