Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[allegro] ograniczony obszar

Ostatnio zmodyfikowano 2008-05-08 20:49
Autor Wiadomość
zax090
Temat założony przez niniejszego użytkownika
» 2008-05-08 20:41:52
c)ludek 2 stoi na środku jako przeszkoda a ludek1 porusza sie po całej mapie nie nie może z każdej strony przeniknąć przez ludek2
P-658
DejaVu
» 2008-05-08 20:49:54
Jak zjem to Ci to napiszę
/edit:
Możesz dodatkowo odkomentować wiersze zakomentowane i też będzie działało tak samo.
C/C++
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+2,ludek_y,ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h)==false &&
            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-2,ludek_y,ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h)==false &&
            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+2,ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h)==false &&
            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-2,ludek->w, ludek->h, ludek1_x, ludek1_y, ludek1->w, ludek1->h)==false &&
            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();
P-659
1 « 2 »
Poprzednia strona Strona 2 z 2