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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#define SPEED 1
#define IMX 368
#define IMY 388
SDL_Surface* ChargerBMP(const char* fic)
{
SDL_Surface *res;
SDL_Surface* tmp = SDL_LoadBMP(fic);
if (tmp==NULL)
{
printf("Erreur chargement %s\n",fic);
exit(-1);
}
res = SDL_DisplayFormat(tmp);
SDL_FreeSurface(tmp);
return res;
}
int modulo(int x,int mod)
{
if (x>=0)
return x%mod;
return (x%mod)+mod;
}
int main(int argc,char** argv)
{
SDL_Surface* fond,*screen;
Uint8* key;
int x,y;
x=y=0;
SDL_Init(SDL_INIT_VIDEO);
screen=SDL_SetVideoMode(IMX,IMY,32,SDL_SWSURFACE|SDL_DOUBLEBUF);
fond=ChargerBMP("fond.bmp");
do
{
SDL_Rect positionfenetre;
key = SDL_GetKeyState(NULL);
SDL_PumpEvents();
if (key[SDL_MOUSEMOTION])
x-=SPEED;
if (key[SDLK_RIGHT])
x+=SPEED;
if (key[SDLK_UP])
y-=SPEED;
if (key[SDLK_DOWN])
y+=SPEED;
positionfenetre.x = modulo(x,IMX);
positionfenetre.y = modulo(y,IMY);
SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
positionfenetre.x = modulo(x,IMX) - IMX;
positionfenetre.y = modulo(y,IMY);
SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
positionfenetre.x = modulo(x,IMX) - IMX;
positionfenetre.y = modulo(y,IMY) - IMY;
SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
positionfenetre.x = modulo(x,IMX);
positionfenetre.y = modulo(y,IMY) - IMY;
SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
SDL_Flip(screen);
SDL_Delay(3);
}
while(!key[SDLK_ESCAPE]);
SDL_FreeSurface(fond);
SDL_Quit();
return 0;
} |
Partager