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

klikanie w strefy myszą oraz akcje, Allegro c++

Ostatnio zmodyfikowano 2010-05-13 19:29
Autor Wiadomość
Destract
Temat założony przez niniejszego użytkownika
klikanie w strefy myszą oraz akcje, Allegro c++
» 2010-05-13 19:27:04
Allegro uczę się od wczoraj, dziś natknąłem się na pewien problem, nie wiem jak zrobić, by po kliknięciu myszą w górną połowę ekranu wyświetlił się obrazek1, a w dolną obrazek2. oto mój kod=]
C/C++
#include <allegro.h>

BITMAP * kursor;

void laduj_kursor()
{
    kursor = load_bitmap( "kursor.bmp", NULL );
    if( !kursor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge zaladowac grafiki ( kursor )" );
        allegro_exit();
    }
};

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};

int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
   
    BITMAP * bufor = NULL;
    bufor = create_bitmap( 800, 600 );
    BITMAP * obrazek1 = NULL;
    BITMAP * obrazek2 = NULL;
    BITMAP * nac = NULL;
    nac = create_bitmap( 800, 600 );
    obrazek1 = load_bmp( "obrazek1.bmp", default_palette );
    obrazek2 = load_bmp( "obrazek2.bmp", default_palette );
   
    laduj_kursor();
    install_mouse();
    show_mouse( screen );
    set_mouse_sprite( kursor );
    unscare_mouse();
   
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( 100, 100, 100 ) );
        myszka();
       
        textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
        clear_keybuf();
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
        if( mb = 1 && my < 300 ) {
            masked_blit( obrazek1, nac, 0, 0, 100, 200, ludek->w, ludek->h );
            blit( nac, screen, 0, 0, 0, 0, 800, 600 );
        }
        if( mb = 1 && my > 300 ) {
            masked_blit( obrazek2, nac, 0, 0, 100, 200, ludek->w, ludek->h );
            blit( nac, screen, 0, 0, 0, 0, 800, 600 );
        }
       
        destroy_bitmap( nac );
        destroy_bitmap( obrazek1 );
        destroy_bitmap( obrazek2 );
        destroy_bitmap( bufor );
        destroy_bitmap( kursor );
        allegro_exit();
        return 0;
    }
    END_OF_MAIN();
póki co jestem totalne newbie, więc bardzo prosze o pomoc i wyrozumiałość=]
z góry dziękuje, Destract

#pixelmaster: zapoznaj się z http://forum.ddt.pl/?Tid=1860
P-16819
DejaVu
» 2010-05-13 19:29:53
Sprawdź czy punkt x,y znajduje się wewnątrz prostokąta (stworzonego przez bitmapę). W skrócie: poczytaj o kolizjach.
P-16820
« 1 »
  Strona 1 z 1