Else ineffectif dans mini-jeu
Résolu/Fermé
supermakopok
Messages postés
14
Date d'inscription
mercredi 11 septembre 2013
Statut
Membre
Dernière intervention
21 août 2014
-
22 avril 2014 à 12:33
supermakopok Messages postés 14 Date d'inscription mercredi 11 septembre 2013 Statut Membre Dernière intervention 21 août 2014 - 23 avril 2014 à 12:37
supermakopok Messages postés 14 Date d'inscription mercredi 11 septembre 2013 Statut Membre Dernière intervention 21 août 2014 - 23 avril 2014 à 12:37
A voir également:
- Else ineffectif dans mini-jeu
- Opera mini pc - Télécharger - Navigateurs
- 94 jeu - Télécharger - Puzzle & Réflexion
- Meilleur mini pc - Accueil - Guide ordinateurs
- Jeu zuma - Télécharger - Jeux vidéo
- Geekom mini it11 - Accueil - Guide ordinateurs
2 réponses
[Dal]
Messages postés
6203
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2025
1 099
Modifié par [Dal] le 23/04/2014 à 10:40
Modifié par [Dal] le 23/04/2014 à 10:40
Salut supermakopok,
Ton code exécute le dernier
Si tu veux que ton code retourne 0 dès que les 3 pointeurs sont à passés à
Autres remarques :
- tu peux faire
- si tu fais
- je ne connais pas le reste de ton code, mais vu que tu parles de colonnes, je suppose que tu peux probablement faire un tableau "pierre" à deux dimensions plutôt que des variables individuelles PierreTroisUn, PierreTroisDeux, etc.
Dal
Ton code exécute le dernier
elseà la 4ème exécution du bloc.
Si tu veux que ton code retourne 0 dès que les 3 pointeurs sont à passés à
NULL, tu dois mettre ton
return 0;dans le dernier
else ifet supprimer ton
elsequi ne s'exécute que la 4ème fois.
Autres remarques :
- tu peux faire
if (pierreTroisUn) {au lieu de
if (pierreTroisUn != NULL) {, cela sera plus concis
- si tu fais
pierreTroisUn=NULL;et que "pierreTroisUn" contient un pointeur vers une zone mémoire allouée avec
malloc, tu écrases ton pointeur et tu perds la possibilité de libérer cette mémoire ; s'il s'agit bien d'un tel pointeur, tu dois libérer d'abord la mémoire avec
free, puis mettre le pointeur à NULL, sinon tu crées des fuites de mémoire
- je ne connais pas le reste de ton code, mais vu que tu parles de colonnes, je suppose que tu peux probablement faire un tableau "pierre" à deux dimensions plutôt que des variables individuelles PierreTroisUn, PierreTroisDeux, etc.
Dal
supermakopok
Messages postés
14
Date d'inscription
mercredi 11 septembre 2013
Statut
Membre
Dernière intervention
21 août 2014
23 avril 2014 à 12:37
23 avril 2014 à 12:37
J'ai retrouvé la base de mon problème, comme je m'en doutais, c'était tout c** mais je n'y avais même pas pensé.
En fait j'initialisait toutes les pierres en tant que mon "pierre.bmp", et le fait que je fasse blitter cette pierre ou non l'affichait (ou non)
De ce fait quand une pierre ne s'affichait pas à l'écran, la surface qui y correspondait n'était pas pour autant NULL, juste non blittée >_<
Donc il fallait toujours, même si une seule pierre s'affichait à l'écran, que l'on mette NULL les 3 pierres (dont deux qui ne s'affichaient pas), le else marchait en fait parfaitement.
En tout cas, merci Dal j'ai quand même suivi tes conseils, ça allège salement le code :)
En fait j'initialisait toutes les pierres en tant que mon "pierre.bmp", et le fait que je fasse blitter cette pierre ou non l'affichait (ou non)
De ce fait quand une pierre ne s'affichait pas à l'écran, la surface qui y correspondait n'était pas pour autant NULL, juste non blittée >_<
Donc il fallait toujours, même si une seule pierre s'affichait à l'écran, que l'on mette NULL les 3 pierres (dont deux qui ne s'affichaient pas), le else marchait en fait parfaitement.
En tout cas, merci Dal j'ai quand même suivi tes conseils, ça allège salement le code :)
Modifié par [Dal] le 23/04/2014 à 10:54
Modifié par [Dal] le 23/04/2014 à 11:07
Voilà un exemple simulé avec deux "pierres" en positions 1 et 3 :
On a bien le "retourne 0" à la 2ème itération.
Mes autres remarques sur la libération de mémoire et la structuration des données sous forme de tableau restent d'actualité.
Dal
23 avril 2014 à 12:22