[C++, allegro] Problem z biblioteką allegro i ruchem bitmapy

Witam. Mam program który odpala okno w którym jest bitmapa z ludkiem. I chcę zeby po wciśnięciu strzałki ludek poruszył się o 1 pixel, ale robi się coś takiego:

http://img193.imageshack.us/f/zrzutekranuod.png/

#include 

int main()

{

allegro_init();

install_keyboard();

set_color_depth(16);

set_gfx_mode(GFX_AUTODETECT_WINDOWED,400,300,0,0);

clear_to_color(screen, makecol(128,128,128));


BITMAP *ludek = NULL;


ludek = load_bmp("ludek.bmp",default_palette);

if (!ludek)

{

set_gfx_mode(GFX_TEXT,0,0,0,0);

allegro_message("nie mogę załadować obrazka Ludek !");

allegro_exit();

return 0;

}


int ludek_x = 100, ludek_y = 100;  


while( !key[KEY_ESC])

{

if( key[KEY_LEFT]) ludek_x--;

if( key[KEY_RIGHT]) ludek_x++;

if( key[KEY_UP]) ludek_y--;

if( key[KEY_DOWN]) ludek_y++;


masked_blit( ludek, screen, 0,0, ludek_x, ludek_y, ludek->w, ludek->h);

}

destroy_bitmap(ludek);

allegro_exit();

return 0;

}

END_OF_MAIN();

Najpierw zamaluj poprzednią pozycje ludka trawą a następnie maluj ludka w nowej pozycji.

Polecam double buffering, bo:

  1. rozwiąże twój problem

  2. jest dużo szybsze niż rysowanie bezpośrednio na screen

właśnie znalazłem. temat do zamknięcia