bonjour,
j'ai suivi et fait le tutoriau sur le jeu sdl du morpion mais lors de la fin de la compilation il
m'indique qu'il y a des erreurs de lecture sur les image bmp .
merci
bonjour,
j'ai suivi et fait le tutoriau sur le jeu sdl du morpion mais lors de la fin de la compilation il
m'indique qu'il y a des erreurs de lecture sur les image bmp .
merci
bien le bonjour,
quelles erreurs ? tu peux donner l'intitulé ?
Hmmm une erreur sur la lecture des images bmp lors d'une compilation ?Envoyé par Asmod_D
Cela me semble bien étrange...
Ce serait bien de fournir :
- Quelle partie du tutoriel ?
- Quel système d'exploitation ?
- Quel IDE ?
- Quel Compilateur ?
- C'est quoi le message ?
Jc
je travail sous linux suse avec l'ide kdevelopp .j'ai travaillé sur la deuxieme partie du tutorial du morpion . comme le programme est un peu long .j'ai fait un programme juste pour charger et afficher une image bmp voici le code :
je voudrais savoir pourquoi que l'image ne s'affiche pas a l'ecran .j'ai mis l'image bmp avec le source du code dans le repertoire src du projet
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 #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <iostream> #include <stdlib.h> #include "SDL.h" using namespace std; int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *imageDeFond = NULL; SDL_Rect positionFond; positionFond.x = 0; positionFond.y = 0; imageDeFond=NULL; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Chargement d'images en SDL", NULL); imageDeFond = SDL_LoadBMP("h.bmp"); if(imageDeFond==NULL) { return false; } SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond); SDL_Flip(ecran); pause(); SDL_FreeSurface(imageDeFond); SDL_Quit(); return EXIT_SUCCESS; }
voila !
Je ne connais pas kdevelop, mais avant de donner un prognostic, je pense qu'il serait bien de corriger quelques détails :
- main retourne un int et toi tu fais ceci :
or tu devrais faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(imageDeFond==NULL) { return false; }
- si tu utilises SDL_Flip, alors il faudrait dire à SDL que tu veux un double tampon pour l'affichage. Ce qui se fait comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(imageDeFond==NULL) { return EXIT_FAILURE; }
- Faire un appel à pause est une mauvaise idée pour le programme SDL. Préfére une boucle événementielle qui ne fait rien d'autre que capter les messages...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
Donc :
devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pause();
Pour le problème : une fois que j'ai fais cela, je n'en n'avais pas (d'ailleurs même avec ton code de base, le programme fonctionnait).
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 //Traiter les événements while(SDL_PollEvent(&event)) { //Pour chaque événement, on regarde d'abord le type switch(event.type) { //Gestion de l'événement en fonction de son type //Si on ne veut pas le gérer, on ne fait rien default: break; } //Code d'affichage à mettre ici... }
Je parierais sur le fait que l'IDE mets l'exécutable dans un répertoire séparé ou le lance à partir d'un autre endroit et, du coup, ton fichier bmp n'est pas accessible.
Ou ton fichier bmp est corrompu.
Jc
salut,
effectivement, tu as raison, j'ai fait une copie de l'image sur la racine de mon repertoire et j'ai donné le chemin et puis ça été bon :l'image s'affiche ..
excuse pour le code un peu nul ,mais je debute sous sdl ainsi que l'ide kdevelopp
je te remercie pour tes conseils .
Partager