Qtk Temat założony przez niniejszego użytkownika |
[AllegroPNG] Problem z kompilacją w linuksie. » 2010-02-09 12:05:18 Witam, cały czas walczę z tym kodem, teraz jednak w linuksie. Mam napisany taki kod : #include <allegro.h> #include <alpng.h>
volatile long speed = 0;
void increment_speed()
{ speed++; }
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
BITMAP * cegla = NULL;
BITMAP * kamien = NULL;
BITMAP * ludek = NULL;
BITMAP * panbomba = NULL;
BITMAP * bufor = NULL;
BITMAP * ziemia = NULL;
int ludek_x = 100, ludek_y = 100;
int bomba_x = 500, bomba_y = 200;
int bomba_zasieg = 50;
void tworz_mape();
int main()
{ allegro_init(); alpng_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * cegla = load_png( "cegla.png", 0 ); BITMAP * kamien = load_bmp( "kamien.png", 0 ); BITMAP * ludek = load_bmp( "ludek.png", 0 ); BITMAP * panbomba = load_bmp( "panbomba.png", 0 ); bufor = create_bitmap( 800, 600 ); ziemia = create_bitmap( 800, 600 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora!" ); allegro_exit(); return 0; } if( !ziemia ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bitmapy ziemi!" ); allegro_exit(); return 0; } tworz_mape(); while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if(( key[ KEY_RIGHT ] ) &&( ludek_x < 800 ) ) { ludek_x += 3; } else if(( key[ KEY_LEFT ] ) &&( ludek_x > 0 ) ) { ludek_x -= 3; } else if(( key[ KEY_DOWN ] ) &&( ludek_y < 5 ) ) { ludek_y = ludek_y + 1; } else if(( key[ KEY_UP ] ) &&( ludek_y > 40 ) ) { ludek_y -= 10; } if(( key[ KEY_W ] ) &&( bomba_y > 40 ) ) { bomba_y -= 5; } else if(( key[ KEY_S ] ) &&( bomba_y < 600 ) ) { bomba_y += 5; } if(( key[ KEY_A ] ) &&( bomba_x > 20 ) ) { bomba_x -= 5; } else if(( key[ KEY_D ] ) &&( bomba_x < 780 ) ) { bomba_x += 5; } if(( key[ KEY_Z ] ) &&( bomba_zasieg > 10 ) ) { bomba_zasieg -= 5; } if(( key[ KEY_X ] ) &&( bomba_zasieg < 200 ) ) { bomba_zasieg += 5; } if(( key[ KEY_SPACE ] ) ) { circlefill( ziemia, bomba_x, bomba_y, bomba_zasieg, makecol( 255, 0, 255 ) ); } if( getpixel( ziemia, ludek_x, ludek_y ) != makecol( 255, 0, 255 ) && getpixel( ziemia, ludek_x, ludek_y - 1 ) != makecol( 255, 0, 255 ) && ludek_y > 40 ) ludek_y--; if( getpixel( ziemia, ludek_x, ludek_y ) == makecol( 255, 0, 255 ) ) ludek_y += 4; speed--; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); masked_blit( ziemia, bufor, 0, 0, 0, 0, 800, 600 ); masked_blit( ludek, bufor, 0, 0, ludek_x - 20, ludek_y - 40, ludek->w, ludek->h ); masked_blit( panbomba, bufor, 0, 0, bomba_x - 20, bomba_y - 40, panbomba->w, panbomba->h ); textprintf_ex( bufor, font, 10, 30, makecol( 255, 255, 255 ), - 1, "Sila Pana Bomby : %d", bomba_zasieg ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } remove_int( increment_speed ); destroy_bitmap( cegla ); destroy_bitmap( kamien ); destroy_bitmap( ludek ); destroy_bitmap( ziemia ); destroy_bitmap( bufor ); allegro_exit(); return 0; }
END_OF_MAIN();
void tworz_mape()
{ clear_to_color( ziemia, makecol( 255, 0, 255 ) ); for( int i = 0; i < 20; i++ ) { masked_blit( kamien, ziemia, 0, 0, i * 200, 560, kamien->w, kamien->h ); masked_blit( cegla, ziemia, 0, 0, i * 79, 280, cegla->w, cegla->h ); masked_blit( cegla, ziemia, 0, 0, i * 40, 320, cegla->w, cegla->h ); } for( int i = 0; i < 5; i++ ) { masked_blit( kamien, ziemia, 0, 0, 100, 520 - i * 40, kamien->w, kamien->h ); masked_blit( kamien, ziemia, 0, 0, 500, 520 - i * 40, kamien->w, kamien->h ); masked_blit( cegla, ziemia, 0, 0, 200 + i * 40, 480, cegla->w, cegla->h ); } masked_blit( cegla, ziemia, 0, 0, 500, 100, cegla->w, cegla->h ); masked_blit( kamien, ziemia, 0, 0, 100, 100, kamien->w, kamien->h ); }
Przy kompilacji nie wyskakują żadne błedy, dopiero gdy chcę otworzyć binarkę za pomocą "./nazwa pliku" okno pojawia się dosłowniew na 1 sec. i znika, w konsoli wyskakuje błąd "Aborted"... Wie ktoś może jak to rozwiązać ?:> |