Charger une image en C

Klapaucius Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Klapaucius Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Salut salut,

Je debute en programmation et je programme en C. Mais voila j'ai un probleme dans mon programme. Tout fonctionne mais à la fin du jeu, je voudrais que tout l'écran s'efface pour afficher une autre image.
J'ai essayé de simplement charger une autre image sur la meme variable, seulement l'image ne change que dès que je ferme le programme et si la condition du changement est réalisée.
J'ai cherché comment faire sur le net mais j'ai rien trouvé. Du coup quelqu'un sait il comment s'y prendre?
J'espère que mon problème est clair x)

Merci d'avance
A voir également:

5 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

On a besoin d'autres informations.
J'imagine que tu utilises une bibliothèque graphique. Laquelle ? SDL ?
0
Klapaucius Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Oui j'utilise la SDL. J'ai pas encore testé d'autres bibliothèques.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Et pourrais-tu montrer ton code ?
0
Klapaucius Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Ok j'espere que c'est pas trop mal ordonné

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>


void pause();

int main(int argc, char *argv[])
{

SDL_Surface *ecran = NULL, *imageDeFond = NULL, *square = NULL;
SDL_Rect positionSquare;
SDL_Rect positionFond;
SDL_Event event;
int continuer = 1;

// Pour info, "square" me sert de personnage à déplacer

positionFond.x = 180;
positionFond.y = 100;

positionSquare.x = 190;
positionSquare.y = 110;


SDL_Init(SDL_INIT_VIDEO);

ecran = SDL_SetVideoMode(1200, 800, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Mon labyrinthe", NULL);

square = SDL_LoadBMP("rectangle.bmp");
SDL_BlitSurface(square, NULL, ecran, &positionSquare);


imageDeFond = SDL_LoadBMP("laby.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);


SDL_EnableKeyRepeat(20, 3);
while (continuer)
{
SDL_WaitEvent(&event);
//deplacements au clavier


switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP:
if (positionSquare.y > 105)
positionSquare.y-=5;
else
positionSquare.y+=0;
break;
case SDLK_DOWN:
if (positionSquare.y < 650)
positionSquare.y+=5;
else
positionSquare.y+=0;
break;
case SDLK_RIGHT:
if (positionSquare.x < 970)
positionSquare.x+=5;
else
positionSquare.x+=0;
break;
case SDLK_LEFT:
if (positionSquare.x > 185)
positionSquare.x-=5;
else
positionSquare.x+=0;
break;
case SDLK_ESCAPE:
continuer = 0;
break;
}
break;
}
// La condition, c'est parce que mon labyrinthe est plus petit que la fenetre


SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 68, 129, 242));
//puis reblitter la grille
imageDeFond = SDL_LoadBMP("laby.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
SDL_BlitSurface(square, NULL, ecran, &positionSquare);
//mise a jour de l'ecran
SDL_Flip(ecran);
}


//Je pense que c'est ce truc là qui pose probleme et je suis meme pas sure
// que tout soit utile, ou alors il est mal placé :/

if(positionSquare.x==970 && positionSquare.y==650)
{
SDL_Flip(ecran);
SDL_FreeSurface(square);
SDL_FreeSurface(imageDeFond);
positionFond.x = 0;
positionFond.y = 0;
imageDeFond = SDL_LoadBMP("final.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

}


SDL_Flip(ecran);



pause();

SDL_FreeSurface(square);
SDL_FreeSurface(imageDeFond);
SDL_Quit();

return EXIT_SUCCESS;
}


void pause()
{
int continuer = 1;
SDL_Event event;

while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
continuer = 0;
break;
}

}
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Klapaucius Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Ah oui comme ma grille est une image de fond, évidemment je peux passer à travers les murs mais je verrai ça plus tard ^^
0