SDL_TTF se fait la malle

Résolu
lenouveau82 Messages postés 53 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 30 juillet 2024 - Modifié le 20 févr. 2024 à 13:08
mamiemando Messages postés 33385 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 - 27 févr. 2024 à 03:33

Salut tout le monde,

Récemment, je me suis lancé comme défi de recréer le jeu 2048 en C. Ça n'a pas tout le temps été facile, mon code peut certainement être optimisé, mais tout est parfaitement fonctionnel sauf une chose : la librairie TTF de la SDL qui part en vacances quand je joue, et j'ignore pourquoi.

Parfois tout se passe bien, et à d'autres moments quand je joue tous les caractères disparaissent.

Si vous avez une idée de là où ça peut provenir j'aimerais bien la connaitre. Si vous voulez que je vous partage le code c'est avec plaisir mais il est assez conséquent.

2 réponses

mamiemando Messages postés 33385 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 7 803
Modifié le 20 févr. 2024 à 13:14

Bonjour,

Sans voir le code, on ne peut pas vraiment te répondre.

Selon cette discussion, ce pourrait être dû à une mauvaise gestion de la mémoire, donc je t'invite à vérifier dans ton code que tu libères (free) bien tout ce que tu alloues (malloc) quand tu n'en as plus besoin. L'idéal est d'utiliser un outil comme valgrind.

Si tu veux plus de précisions, je pense qu'il faudra nous partager ton code.

  • L'idéal serait alors que tu le mettes par exemple sur github et que tu nous donnes le lien vers ton dépôt.
  • Dans ce cas, merci d'ajouter les instructions pour compiler ton programme (s'il y a un Makefile ou de quoi en générer un, par exemple avec cmake), c'est encore mieux :p 

Bonne chance

1
lenouveau82 Messages postés 53 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 30 juillet 2024
25 févr. 2024 à 21:43

Bon ben finalement c'est bon, j'ai réussi, j'avais juste pas libéré les surfaces. ça plus le fait que je chargeais en mémoire certains textes qui n'apparaissaient qu'une fois autant de fois qu'il y avait de cases, ça débordait vite.

0
mamiemando Messages postés 33385 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 7 803 > lenouveau82 Messages postés 53 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 30 juillet 2024
27 févr. 2024 à 03:33

Félicitations :-)

0
lenouveau82 Messages postés 53 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 30 juillet 2024
Modifié le 27 févr. 2024 à 03:33

Coucou, j'ai mis tous les fichiers sur mon repo https://github.com/Emmanuel825/2048.git à part les fichiers SDL parce qu'ils ne passaient pas (je ne suis pas arrivé à le faire par Eclipse du coup je l'ai fais directement par Github, et ça a coincé). Donc je les mets ici https://drive.google.com/drive/folders/1hNJRr30w0odl7B_1o55seb3mQT4Mgt-0?usp=sharing . Il faut les mettre avec l'exe et les fichiers source mais ça je pense que tu le savais déjà :). Pour le Makefile j'ai généré mon projet avec Eclipse qui fait à peu près tout automatiquement, donc c'est plus compliqué de t'expliquer vu que même moi je ne sais pas trop :(

0
mamiemando Messages postés 33385 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 7 803
Modifié le 27 févr. 2024 à 03:36
  • A priori, tu n'as effectivement aucune raison de mettre des bouts de librairie SDL, qui sont a priori indépendante de ton projet (mais dépendantes du système cible) dans ton dépôt git.
    • En l'occurrence, comme tu es sous Windows et moi sous Linux, les éventuelles librairies compilées (i.e. les ".dll") que tu utilises me sont complètement inutiles car Windows et Linux n'utilisent pas du tout les mêmes formats.
    • Réciproquement, les librairies (i.e. les ".so") que je pourrais te mettre à disposition te serait complètement inutiles.
  • C'est la raison pour laquelle généralement, on s'appuie sur cmake pour auto-générer un Makefile adapté au système cible et en charge de vérifier la présence des librairies nécessaires à ton projet.
  • Toutefois, comme cmake ne prendra aucune initiative pour installer les éventuelles dépendances manquante, il est avisé d'indiquer comment installer lesdites librairies pour les principaux système d'exploitation (typiquement, les liens adéquats pour une installation windows, et la liste des paquets lib*-dev à installer pour une distribution Linux basée sur Debian). 
0