Bon c´est pas grave, autre chose,
j´ai ce code là, mais quand je l´éxécute, jai l´image d´un bonhomme(jusque là normal) qu´on promène sur le screen bleu ( normal), mais ça me laisse la trace du bonhomme sur chaque 30 pixels, svp heeeelp
le code en question:
- include < stdlib.h>
- include < SDL/SDL.h>
int main(int argc, char *argv[])
{
SDL_Surface *screen, *image;
SDL_Rect dst, dstblue;
SDL_Event event;
Uint8 *keys;
int tuxX = 50, tuxY = 50;
bool done = false;
if(SDL_Init(SDL_INIT_VIDEO) == -1)
{
printf("Can´t init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
screen = SDL_SetVideoMode(1000, 730, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));
if(screen == NULL)
{
printf("Can´t set video mode: %s\n", SDL_GetError());
exit(1);
}
image = SDL_LoadBMP("warrior-test.bmp");
if(image == NULL)
{
printf("Can´t load image of tux: %s\n", SDL_GetError());
exit(1);
}
dst.w = image->w;
dst.h = image->h;
dstblue.w = image->w + 1;
dstblue.h = image->h + 1;
SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 0, 255));
while(!done)
{
while(SDL_PollEvent(&))
{
switch(event.type)
{
case SDL_QUIT:
done = true;
break;
}
}
keys = SDL_GetKeyState(NULL);
if(keys[SDLK_UP])
{
if(tuxY > 10)
tuxY-=30;
SDL_Delay( 150 ) ;
}
if(keys[SDLK_DOWN])
{
if(tuxY < 700 - image->h)
tuxY+=30;
SDL_Delay( 150 ) ;
}
if(keys[SDLK_RIGHT])
{
if(tuxX < 900 - image->w)
tuxX+=30;
SDL_Delay( 150 ) ;
}
if(keys[SDLK_LEFT])
{
if(tuxX > 10)
tuxX-=30;
SDL_Delay( 150 ) ;
}
dst.x = tuxX;
dst.y = tuxY;
dstblue.x = tuxX - 1;
dstblue.y = tuxY - 1;
SDL_FillRect(screen, &, SDL_MapRGB(screen->format, 0, 0, 255));
SDL_BlitSurface(image, NULL, screen, &);
SDL_Flip(screen);
SDL_UpdateRect(screen, 0, 0, 0, 0);
}
SDL_FreeSurface(image);
return 0;
}
En fait j´aimerais que vous modifiez mon code, et que vous m´expliquiez ce qui va pas la dedans
( si possible
)
merci bcp