Je suis en train de finir le TP Mario Sokoban. il me reste l'enregistrement de niveaux, et de la progression d'une potentielle aventure, ainsi qu'une page intermédiaire avec le choix de jouer à ses niveaux édités ou non, à faire.
Cependant, j'ai 2 bugs dans mes fichiers que je n'arrive pas à résoudre.
Ligne 282 du fichier main.c, j'ai dû mettre un SDL_Delay(200) car le if(jouer) soit if(0) lorsque l'on veut édité un niveau ignore le else, après avoir choisi un mode et l'avoir quitté.
Ligne 587, dans la fonction appelMenuPause(), impossible de changer la texture du bouton de sauvegarde.
Les conditions délimitant la zone cliquable du bouton marchent, d'après les messagebox qui sont apparus.
Évite d'inclure des binaires dans un dépôt SCM (.dll, .exe)
Les évènements c'est mieux de les dépiler en boucle, sinon c'est lent et il t'en restera après étude d'un évènement interessé
Pour ton problème, va falloir debugger ou au pire rajouter des printf de debugage. Mais en découpant plus soigneusement tu arriveras à diagnostiquer mieux le problème.
git is great because Linus did it, mercurial is better because he didn't.
@markand, pourquoi est-ce que ma fonction main est scandaleuse ?
@edgarjacobs a à peu près tout dit. si tu ne remarques pas de toi même ce qui ne va pas dans ta fonction il faut que tu continues de lire des cours et de regarder des projets opensource pour t'inspirer. Il y a aussi :
Beaucoup trop d'indentation
Aucun design de données (j'ai pas trouvé une seule structure, union ou énumération dans ton code)
git is great because Linus did it, mercurial is better because he didn't.
J'ai mis à jour mon code, qui est beaucoup plus propre, sur Github, mais je n'ai pas fini mon jeu.
Bon, comme je suis un gros flemmard, je n'ai pas traduis mon code en Anglais.
Le bug pour la texture de la sauvegarde a magiquement disparu et celui pour la condition avec la variable jouer vient d'un bug de SDL2 avec le SDLK_RETURN.
Je l'ai remplacé avec SDLK_1 et tout marche correctement.
Problème : je voudrais vraiment pouvoir détecter la touche entrée.
Et aussi, dans l'animation de fin de partie, lorsque l'on fait un clique alors que la boucle diminuant la transparence de l'image de victoire, l'image se fige.
Comment faire ?
Merci
- Edité par Iconic I Clash 8 janvier 2022 à 23:36:02
Le bug (....) pour la condition avec la variable jouer vient d'un bug de SDL2 avec le SDLK_RETURN.
(....)
Problème : je voudrais vraiment pouvoir détecter la touche entrée.
Il y a 2 valeurs de retour différentes: SDLK_RETURN qui est la touche <═╝ du clavier alphabétique, et SDLK_KP_ENTER qui est la touche ENTER du pavé numérique. Ce n'est pas sdl qui a un problème.
Iconic I Clash a écrit:
(....) Le bug pour la texture de la sauvegarde a magiquement disparu (....)
Ça n'annonce rien de bon....
- Edité par edgarjacobs 8 janvier 2022 à 23:52:06
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
J'ai bien utilisé SDLK_RETURN pour la touche entrée du clavier alphabétique.
Lorsque qu'il y a une condition, pour exécuter le code qui suit, le else de if(0) fonctionne une fois puis aléatoirement.
Sinon, c'est le code qui suit est également exécuter une fois puis aléatoirement.
En tout cas, j'ai essayé de débugger au maximum mon code, supprimer toutes les lignes qui pouvaient encore être supprimé sans gêner mes tests et j'en ai conclus que SDLK_RETURN faisait bugger mon programme.
EDIT : c'est pareil si je fais SDL_GetKeyboardState(NULL)[SDL_SCANCODE_RETURN] mais tout marche très bien avec les autres touches.
- Edité par Iconic I Clash 9 janvier 2022 à 10:53:56
Quand on a un programme qui exécute aléatoirement du code, du code qui s'exécute une fois puis plus, et dont un bug disparait miraculeusement, il est nécessaire de se poser des questions sur le programme en question, avant de croire que c'est la lib qui déconne, surtout quand cette lib est pas mal utilisée, et ce depuis des années. Evidemment, incriminer une lib permet de ne pas remettre en question la qualité du programme qui l'utilise.
Edit: j'ai voulu aller chercher ton programme, mais le lien est mort.
- Edité par edgarjacobs 9 janvier 2022 à 16:58:54
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Dans ton main, encore des pelletées de variables déclarées, 250 lignes dont certaines dépassent les 250 caractères, des fonctions qui prennent 20 arguments.... c'est un code impossible à lire et comprendre.
Je suis certain que le main() n'a pas à passer toutes ces variables aux fonctions, elles peuvent elles-même les déduire ou les cacluler.
- Edité par edgarjacobs 9 janvier 2022 à 20:38:55
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
[MARIO SOKOBAN] 2 bugs : texture et condition
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
git is great because Linus did it, mercurial is better because he didn't.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent