je suis en train de programmer un petit jeux, tout ce passe bien mais quand je clic sur la croix pour fermer la fenêtre, et bien elle ne se ferme pas et le programme crache.
C'est pas une erreur comme si l'event SDL_Quit était mal codé, non car tout marcher bien.
Voici mon code qui n'est pas du tout optimisé je sais :
Commence par organiser ton code correctement. Ton main fait 1400 lignes alors que tu ne contrôles aucun retour de fonction, il devrait en faire 40 à tout casser. C'est un problème largement plus grave que ton plantage actuellement ...
Daccord ce n'est pas la premier fois que l'on me fait la remarque alors je vais commencer a crée des fonctions, mais je ne suis pas très doué avec celle si alors voici ce que j'ai commencer à coder, c'est une fonction pour afficher les textes de mon jeu mais quand je lance le jeu les texte ne s'affiche pas. Pourrais tu m'aider ?
Tu ne découpes pas assez ta réflexion sur ton programme, ce qui me fait dire que tu n'es pas encore tout à fait prêt pour des programmes plus gros. Regarde par exemple, ici tu as une notion de texte, et plutôt que te donner les moyens de manipuler facilement du texte avec que fonctionnalités ciblées, tu gardes tout mélangé. Alors que l'on peut faire quand même bien plus simple !
Là, on a une fonction pour afficher une information en texte à une position donnée. Et comment ça transforme le code ?
int afficheTextInfo (SDL_Surface* ecran, int paper, int energy, int stone, int coal, int iron, int gold, int diamond, int emerald, int maxEnergy, int maxStone, int maxCoal, int maxIron, int maxGold, int maxDiamond, int maxEmerald)
{
TTF_Font *police = TTF_OpenFont("police/ariblk.ttf", 20);
if(! police) return 1;
SDL_Color couleur = {0, 0, 0};
//il faut ajouter les contrôles
afficheInfo(paper , maxPaper , ecran, police, couleur, 1010, 55);
afficheInfo(erergy , maxEnergy , ecran, police, couleur, 1010, 131);
afficheInfo(stone , mapStone , ecran, police, couleur, 1010, 207);
afficheInfo(coal , mapCoal , ecran, police, couleur, 1010, 283);
afficheInfo(iron , mapIron , ecran, police, couleur, 1010, 359);
afficheInfo(diamond, mapDiamond, ecran, police, couleur, 1010, 435);
afficheInfo(emerald, mapEmerald, ecran, police, couleur, 1010, 511);
return 0;
}
Il fait la même chose en 100 lignes de moins, et encore : j'ai même ajouté des contrôles d'erreur que tu n'as pas (mais qui sont nécessaires). Et même ce code là, on peut encore lui reproche pleins de trucs :
l'entrée de la fonction n'est pas pratique, on aimerait bien avoir des structures pour nos données,
les positions sont des valeurs magiques dans le code, on voudrait les configurer (et ça pourrait aussi être mis dans une structure),
etc ...
Bref, avant de code bille en tête. Prends ton problème global et découpe le en idées plus simples. Ensuite, tu reprends ces idées simples et tu recommences, et puis encore, et puis encode. Jusqu'à que les idées soit suffisamment simples pour ne plus pouvoir être découpées. Chacune de ces phases de découpent vont définir les fonctions qu'il va falloir que tu implémentes, mais également les structures de données qui vont rassembler les informations qui vont ensembles, etc.
Et tant que ton projet n'est pas clairement organisé et posé sur papier, tu n'écris pas une ligne de code, sinon tu cours droit au massacre.
Alors ce serait pas mal d'attaquer ton apprentissage de C dans le bon ordre. A savoir commencer par apprendre les bases, notamment comment structurer son code, et ensuite s'attaquer à un projet plus conséquent avec SDL. Tu ne peux pas bricoler des trucs quasiment au hasard et espérer que ça va marcher.
Je connais déjà les bases du C j'ai fini le tuto de @Mateo mais j'ai zappé la partie sur les fonctions ...
Le tutoriel de Mateo ne donne pas toutes les bases du C, et si en plus tu as sauté la partie sur les fonctions, non tu n’es pas prêt à te lancer dans la création d’un gros programme. Passé la cinquantaine de ligne, l’utilisation de fonctions devrait être obligatoire.
Comment tu veux développer quoi que ce soit de correct si tu n'as pas pris l'habitude de faire des fonctions en permanence ? Sans parler de la notion de structure qui est également vitale dans ce langage ?
Sachajoub a écrit:
EDIT : j'ai réussi a réparer mon erreur est le programme ce lance mais par contre les textes ne s'affiche toujours pas.
C'est un pansement sur une jambe de bois. Sans compter le fait que tu as viré les contrôles d'erreur (ce qui est suicidaire en C). Rêve pas, tu ne pourras pas coder un truc en C, si tu ne fais pas l'effort de prendre le temps de penser ton programme correctement et si tu n'es pas hyper rigoureux dans la manière dont tu développes avec.
Ksass`Peuk a écrit:
Et tant que ton projet n'est pas clairement organisé et posé sur papier, tu n'écris pas une ligne de code, sinon tu cours droit au massacre.
Je suis en train de rétrécir mon main en faisant des structures pour mais int ce qui vas aussi alléger mais paramètre de fonction. Et exact pour terminer je n'avais pas vue, et pour la vérif des fonctions a risque c'est prévue. Mais chaque choses en son temps
Ne pas se décourager !
Programme qui plante quand je le ferme SDL
× 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.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C