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 -
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
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:
- Charger une image en C
- Image iso - Guide
- Légender une image - Guide
- Transformer une image en icone - Guide
- Mettre une image en filigrane sur word - Guide
- Couper une image en 3 instagram - Guide
5 réponses
Bonjour,
On a besoin d'autres informations.
J'imagine que tu utilises une bibliothèque graphique. Laquelle ? SDL ?
On a besoin d'autres informations.
J'imagine que tu utilises une bibliothèque graphique. Laquelle ? SDL ?
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;
}
}
}
}
#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;
}
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question