[Biblioteka Allegro]Nie wczytuje żadnego obrazka.

0

Cześć. Chodzi mi o czarny obraz. W kodzie mam załadowane tekstury wszytko załączone. Nie mam żadnych błędów a zamiast wyświetlać mój samochód - całe czarne. Dodam że odkąd nie zanimowałem ruchu i nie dodałem podwójnego buferowania
było wszystko dobrze. Pisałem na innych forach i niektórzy pisali że to przez zły format pliku. Zapisyywałem kilka razy w formacie *.bmp. Używam Code::Blocks. A to mój kod:

 
#include <allegro.h>
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int main()
{
    
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 10, 10, 10 ) );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) );
    
    BITMAP * bufor = NULL;
    BITMAP * ludek = NULL;
    BITMAP * ludek1 = NULL;
    BITMAP * ludek2 = NULL;
    BITMAP * ludek3 = NULL;
    
    bufor = create_bitmap( 800, 800 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge utworzyc bufora !" );
        allegro_exit();
        return 0;
    }
    ludek = load_bmp( "ludek.bmp", default_palette );
    ludek1 = load_bmp( "ludek01.bmp", default_palette );
    ludek2 = load_bmp( "ludek02.bmp", default_palette );
    ludek3 = load_bmp( "ludek03.bmp", default_palette );
    
    int ludek_x = 100, ludek_y = 100;
    int frame = 0;
    
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            
            if( key[ KEY_LEFT ] ) ludek_x--;
            
            if( key[ KEY_RIGHT ] ) ludek_x++;
            
            if( key[ KEY_UP ] ) ludek_y--;
            
            if( key[ KEY_DOWN ] ) ludek_y++;
            
            speed--;
            
            frame++;
            if( frame > 80 ) frame = 0;
            
            rest( 10 );
            
        }
        
        if( frame < 20 ) { draw_sprite( bufor, ludek, ludek_x, ludek_y ); }
        else if( frame >= 20 && frame < 40 ) { draw_sprite( bufor, ludek1, ludek_x, ludek_y ); }
        else if( frame >= 40 && frame < 60 ) { draw_sprite( bufor, ludek2, ludek_x, ludek_y ); }
        else if( frame >= 60 && frame < 80 ) { draw_sprite( bufor, ludek3, ludek_x, ludek_y ); }
        
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        
    }
    destroy_bitmap( ludek );
    remove_int( increment_speed );
    destroy_bitmap( ludek1 );
    destroy_bitmap( ludek2 );
    destroy_bitmap( ludek3 );
    destroy_bitmap( bufor );
    
    allegro_exit();
    return 0;
}
END_OF_MAIN();
0

Zapomniałeś o czyszczeniu bufora po wyświetleniu swoich bitmap. Dodaj po blit'cie

clear_to_color(bufor,makecol(10,10,10));

Powinno pomóc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1