Voici un code qui marche très bien sans la petite partis de gestion d'évènement (en rajoutant une fonction qu'on m'avait passé). Mais là il ne se passe rien ou alors c'est beaucoup trop rapide.
Mon IDE me dit :
Project : SDL Application
Compiler : GNU GCC Compiler (called directly)
Directory : D:\Documents and Settings\LORMEAU.SN116721270315\Bureau\projet\sdl\image\
--------------------------------------------------------------------------------
Switching to target: default
Linking executable: testimgae.exe
.objs\main.o:main.c:(.text+0x193): undefined reference to `pause'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)"
voici ce fameux code:
#include "main.h"
int main(int argc, char *argv[])
{
SDL_Event event;
SDL_Surface *ecran = NULL, *imageDeFond=NULL, *Sapin=NULL;
SDL_Rect positionFond, positionSapin;
int continuer = 1;
positionFond.x = 0;
positionFond.y = 0;
positionSapin.x = 500;
positionSapin.y = 260;
if (SDL_Init(SDL_INIT_VIDEO) == -1)//ERREUR
{
fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_WM_SetCaption("Les chargements d'images et le probleme de la transparence !", NULL);
SDL_WM_SetIcon(IMG_Load("sdl_icone.bmp"), NULL);
ecran=SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE ); //Pour changé la grandeur de la fenêtre.
if (ecran == NULL)//ERREUR
{
fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
exit(EXIT_FAILURE);
}
//base terminé de l'écran. Près à passé au chose serieuse.
imageDeFond = IMG_Load("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
Sapin = IMG_Load("sapin.png");
SDL_BlitSurface(Sapin, NULL, ecran, &positionSapin);
while (continuer) /* TANT QUE la variable ne vaut pas 0 */
{
SDL_WaitEvent(&event); /* On attend un évènement qu'on récupère dans event */
switch(event.type) /* On teste le type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement QUITTER */
continuer = 0; /* On met le booléen à 0, donc la boucle va s'arrêter */
break;
}
}
SDL_Flip(ecran);//fin obligatoire. NE PAS TOUCHER.
[pause();]//je ne le met pas dans mon code, c'est la fonction qui me permettait de gardé la fenêtre ouverte avant.
SDL_FreeSurface(imageDeFond);
SDL_FreeSurface(Sapin);
SDL_Quit();
return EXIT_SUCCESS;
}
En fait cette ligne avec pause() éxistait sans les []autour et sans le commentaire. Sauf que comme j'avais effacé la fonction pause() de mon code
ça ne rimait plus a rien et ça faisait bugger (en fin je crois que c'est ça qui s'est passé). Je l'avais mis entre [] juste pour vous montré la place de la fonction que j'avais crus éffacé. Apparement tu n'as pas compris (dsl)mais c'est pas grave puisque ça m'a permis de me rendre compte de ma faute (j'avais laissé le pause() ) .Je l'ai donc enlevé, et ça à marché....
si j'ai bien compris, tu appelais une fonction que tu venais d'effacer C'est vrai que c'est mieux de mettre ta "pause" dans une autre fonction. Cela permet à d'autre fonction d'y accéder sans avoir à recopier ;)
Enfin le principal c'est que ce soit réglé
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........