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

Allegro i kodzik

Ostatnio zmodyfikowano 2011-01-28 01:26
Autor Wiadomość
LukiPRO
Temat założony przez niniejszego użytkownika
Allegro i kodzik
» 2011-01-28 01:18:50
Cześć, mam taki problem.

Napisałem sobie kod który sprawdza czy kliknąłem na guzik.
Ale jest jakiś problem którego za nic nie mogę rozwiązać.
Otóż gdy kliknę na guzik to wyskakuje okienko z tekstem Kliknąłeś na guzik
ale gdy klikam ok to ten guzik pokazuje się jeszcze raz.

I tak 2 - 3 razy.

Wiecie może co zrobiłem źle?

C/C++
#include <allegro.h>

int mx, my, mb;

BITMAP * bufor = NULL;
BITMAP * guzik = NULL;

bool wyjscie = false;
bool NaGuziku = false;

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();
    install_mouse();
    set_color_depth( 32 );
    set_window_title( "Myszka" );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
   
    bufor = create_bitmap( 800, 600 );
    guzik = load_bitmap( "guzik.bmp", NULL );
   
    show_mouse( screen );
    unscare_mouse();
   
    while( !wyjscie )
    {
        if( key[ KEY_ESC ] )
        {
            wyjscie = true;
        }
        clear_to_color( bufor, makecol( 10, 255, 0 ) );
        draw_sprite( bufor, guzik, SCREEN_W / 2 - guzik->w / 2, SCREEN_H / 2 - guzik->h / 2 );
        myszka();
        textprintf( bufor, font, 10, 10, makecol( 255, 255, 255 ), "Mysz x = %i   y = %i   button = %i", mx, my, mb );
        if( mouse_x >= 300 && mouse_x <= 500 && mouse_y >= 250 && mouse_y <= 350 )
        {
            if( mouse_b == 1 )
            {
                NaGuziku = true;
            }
        }
        else NaGuziku = false;
       
        if( NaGuziku )
        {
            allegro_message( "Kliknales na guzik" );
        }
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
    }
    destroy_bitmap( bufor );
    destroy_bitmap( guzik );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-27277
DejaVu
» 2011-01-28 01:23:07
C/C++
bool bCzyKlikniety = false;
//...
if( !bCzyKlikniety && klawisz_myszki == 1 )
{
    bCzyKlikniety = true;
    //obsługa klkiknięcia
   
}
if( klawisz_myszki == 0 )
     bCzyKlikniety = false;

P-27279
LukiPRO
Temat założony przez niniejszego użytkownika
» 2011-01-28 01:26:38
Ok wielkie dzięki.
Zamykam
P-27281
« 1 »
  Strona 1 z 1