Możesz dodatkowo odkomentować wiersze zakomentowane i też będzie działało tak samo.
bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 )
{
if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true );
return( false );
}
#include <allegro.h>
int main()
{
allegro_init();
install_keyboard();
set_color_depth( 32 );
set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
clear_to_color( screen, makecol( 128, 128, 128 ) );
BITMAP * bufor = NULL;
BITMAP * ludek = NULL;
BITMAP * ludek1 = NULL;
bufor = 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;
}
ludek = load_bmp( "data/gfx/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;
ludek1 = load_bmp( "data/gfx/ludek1.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 ludek1_x = 200, ludek1_y = 200;
while( !key[ KEY_ESC ] )
{
if(( key[ KEY_LEFT ] ) &&( ludek_x > 0 ) )
{
ludek_x -= 2;
if(
kolizja( ludek_x, ludek_y, ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h ) == true
)
{
ludek_x = ludek1_x + ludek1->w + 1;
}
}
if(( key[ KEY_RIGHT ] ) &&( ludek_x < 680 ) )
{
ludek_x += 2;
if(
kolizja( ludek_x, ludek_y, ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h ) == true
)
{
ludek_x = ludek1_x - ludek->w - 1;
}
}
if(( key[ KEY_UP ] ) )
{
ludek_y -= 2;
if(
kolizja( ludek_x, ludek_y, ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h ) == true
)
{
ludek_y = ludek1_y + ludek1->h + 1;
}
}
if(( key[ KEY_DOWN ] ) &&( ludek_y < 480 ) )
{
ludek_y += 2;
if(
kolizja( ludek_x, ludek_y, ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h ) == true
)
{
ludek_y = ludek1_y - ludek->h - 1;
}
}
clear_to_color( bufor, makecol( 128, 128, 128 ) );
rest( 3 );
masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
masked_blit( ludek1, bufor, 0, 0, ludek1_x, ludek1_y, ludek1->w, ludek1->h );
blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
}
destroy_bitmap( ludek );
destroy_bitmap( ludek1 );
destroy_bitmap( bufor );
allegro_exit();
return 0;
}
END_OF_MAIN();