Si vous pouviez m'aider à résoudre mon problème ce serait sympa; merci par avance.
Voici mon code plus les 2 sprites de barre de tache celle grisé et celle en bleu à télécharger avec MU si vous voulez faire le test :
http://www.megaupload.com/?d=99DV3Z5J BarreDeTache.bmp
http://www.megaupload.com/?d=EIWZRW9H BarreDeTacheEnBleu.bmp
- Code: Tout sélectionner
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <SDL_image.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL, *BarreDeTacheGrise = NULL, *BarreDeTacheBleu = NULL;
SDL_Rect positionFond, posBarreDeTacheGrise, posBarreDeTacheBleu, posBarreDeTache3[2];
int x = 0, y = 0;
int continuer = 1;
SDL_Event event;
positionFond.x = 0;
positionFond.y = 0;
posBarreDeTacheGrise.x = 0;
posBarreDeTacheGrise.y = 0;
posBarreDeTache3[0].x = 0;
posBarreDeTache3[0].y = 0;
posBarreDeTache3[0].w = 45;
posBarreDeTache3[0].h = 24;
posBarreDeTache3[1].x = 45;
posBarreDeTache3[1].y = 0;
posBarreDeTache3[1].w = 51;
posBarreDeTache3[1].h = 24;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetIcon(IMG_Load("sdl_icone.bmp"), NULL);
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
BarreDeTacheGrise = IMG_Load("BarreDeTache.bmp");
SDL_BlitSurface(BarreDeTacheGrise, NULL, ecran, &posBarreDeTacheGrise);
BarreDeTacheBleu = IMG_Load("BarreDeTacheEnBleu.bmp");
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_MOUSEBUTTONUP:
if (event.button.button == SDL_BUTTON_RIGHT)
continuer = 0;
case SDL_MOUSEMOTION:
x = event.motion.x;
y = event.motion.y;
if ((x > posBarreDeTacheGrise.x) && (x < posBarreDeTacheGrise.x + posBarreDeTacheGrise.w-334)&&(y > posBarreDeTacheGrise.y) && (y < posBarreDeTacheGrise.y + posBarreDeTacheGrise.h))
{
SDL_BlitSurface(BarreDeTacheBleu, posBarreDeTache3, ecran, &posBarreDeTache3[0]);
}
if ((x > 45) && (x < 96)&&(y > posBarreDeTacheGrise.y) && (y < posBarreDeTacheGrise.y + posBarreDeTacheGrise.h))
{
SDL_BlitSurface(BarreDeTacheBleu, posBarreDeTache3, ecran, &posBarreDeTache3[1]);
}
if (!((x > 0) && (x <45)&&(y > posBarreDeTacheGrise.y) && (y < posBarreDeTacheGrise.y + posBarreDeTacheGrise.h)))
{
SDL_BlitSurface(BarreDeTacheGrise, NULL, ecran, &posBarreDeTacheGrise);
}
if (!((x > 45) && (x < 96)&&(y > posBarreDeTacheGrise.y) && (y < posBarreDeTacheGrise.y + posBarreDeTacheGrise.h)))
{
SDL_BlitSurface(BarreDeTacheGrise, NULL, ecran, &posBarreDeTacheGrise);
}
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{ case SDLK_ESCAPE:
continuer = 0;
break;
default:
break;
}
break;
}
SDL_Flip(ecran);
}
SDL_FreeSurface(imageDeFond);
SDL_FreeSurface(BarreDeTacheGrise);
SDL_FreeSurface(BarreDeTacheBleu);
SDL_Quit();
return EXIT_SUCCESS;
}