Witam! Po kilku dniach zgłębiania SDL postanowilem zacząć pisać swoją pierwszą grę. Zrobiłem już jako taką mapkę, dlatego następnym moim krokiem był rzecz jasna główny bohater. No i tutaj pojawił się problem. Dodałem nową bitmapę, napisałem proste sterowanie nią, lecz podczas poruszania się (po wcisnieciu klawiszy), bitmapa ludzik nadpisuje mi poprzednie. Tworzy się wtedy piękny wąż zrobiony z głównego bohatera. Czy ktoś wie jakbym mógł temu zapobiec? Jako, że nieczęsto mam dostęp do internetu, zamieszczam kod źródłowy poniżej. Z góry dzięki!

 #include <SDL.h>

SDL_Surface * ekran = NULL;
SDL_Surface * obrazek = NULL;
SDL_Surface * ludzik = NULL;

SDL_Event zdarzenie;

SDL_Rect dest;
SDL_Rect sprst[ 2 ];
SDL_Rect dprst[ 192 ];

Uint8 * klawisz = SDL_GetKeyState( NULL );

int i, k, l;
int kafelka = 0;
int ludzik_x = 100, ludzik_y = 100;

bool exit = false;

int mapa[12][16] = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};


void rysuj()
{
    sprst[0].x = 0; sprst[0].y = 0; sprst[0].w = 50; sprst[0].h = 50;   //obrazek 1
    sprst[1].x = 50; sprst[1].y = 0; sprst[1].w = 50; sprst[1].h = 50;  // obrazek 2

    for( i = 0; i < 12; i=i+1)
        for( k = 0; k <16; k=k+1)
        {
            dprst[kafelka].x = k*50;
            dprst[kafelka].y = i*50;

           if(mapa[i][k] == 1) SDL_BlitSurface( obrazek, & sprst[ 1 ], ekran, & dprst[ kafelka ] );
           else if(mapa[i][k] == 0) SDL_BlitSurface( obrazek, & sprst[ 0 ], ekran, & dprst[ kafelka ] );

            kafelka=kafelka+1;
        }
}


void chodz()
{

}



int main( int argc, char * args[] )
{
    SDL_Init( SDL_INIT_EVERYTHING);
    ekran = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE );
    obrazek = SDL_LoadBMP("obrazek.bmp");
    ludzik = SDL_LoadBMP("ludzik.bmp");
    rysuj();
    //SDL_Flip( ekran );

    while( !exit )
    {
        while( SDL_PollEvent( & zdarzenie ) )
        {

            if( klawisz[SDLK_ESCAPE]) exit = true;
            if( klawisz[SDLK_UP])  ludzik_y=ludzik_y-50;
            if( klawisz[SDLK_DOWN]) ludzik_y=ludzik_y+50;
            if( klawisz[SDLK_LEFT]) ludzik_x=ludzik_x-50;
            if( klawisz[SDLK_RIGHT]) ludzik_x=ludzik_x+50;
        }
        dest.x = ludzik_x;
        dest.y = ludzik_y;
        SDL_BlitSurface(ludzik, NULL, ekran, &dest);
        SDL_Flip( ekran );
    }
    SDL_Quit();
    SDL_FreeSurface( obrazek );

return 0;
}
}