maciejo Temat założony przez niniejszego użytkownika |
[Allegro] Problem z kompilacją kodu » 2010-03-21 20:55:18 Witam wszystkich , jestem początkującym programistą i po przeczytaniu kursu easykodera chciałem napisać prostą platformówkę , ale mam drobne problemy z kompilacją Oto 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 mapa_x = 0, mapa_y = 0; BITMAP * teren = NULL; BITMAP * bufor = NULL;
short int map[ 10 ][ 20 ] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
void wys_mape() { int licznik_x, licznik_y; for( licznik_x = 0; licznik_x < 10; licznik_x++ ) { for( licznik_y = 0; licznik_y < 5; licznik_y++ ) { blit( teren, bufor, ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 4 ) * 40, ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40, licznik_x * 40, licznik_y * 40, 40, 40 ); } } };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 40 ) ); BITMAP * ludek = NULL; bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } teren = load_bmp( "teren.bmp", default_palette ); 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 = 5, ludek_y = 5; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) ludek_x--; if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) ) { mapa_x = mapa_x - 1; } else if( key[ KEY_RIGHT ] ) ludek_x++; if(( key[ KEY_RIGHT ] ) &&( mapa_x < 10 ) ) { mapa_x = mapa_x + 1; } else if( key[ KEY_UP ] ) ludek_y--; if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) ) { mapa_y = mapa_y - 1; } else if( key[ KEY_DOWN ] ) ludek_y++; if(( key[ KEY_DOWN ] ) &&( mapa_y < 5 ) ) { mapa_y = mapa_y + 1; } } speed--; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); wys_mape(); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); }
masked_blit( ludek, screen, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h ); } remove_int( increment_speed ); destroy_bitmap( teren ); destroy_bitmap( bufor ); destroy_bitmap( ludek ); allegro_exit(); return 0; } END_OF_MAIN(); Problem wyświetla w linijce : masked_blit( ludek, screen, 0,0, ludek_x, ludek_y, ludek->w, ludek->h); Używam Dev-C++ |