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

Problem z eventami i klawiaturą

Ostatnio zmodyfikowano 2012-06-07 19:18
Autor Wiadomość
Temes
Temat założony przez niniejszego użytkownika
Problem z eventami i klawiaturą
» 2012-06-07 17:27:56
Problem polega na tym, że mam zainstalowaną myszkę i klawiaturę...
Kod:
C/C++
do {
    al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
    ALLEGRO_EVENT ev;
    al_wait_for_event( event_queue, & ev );
    if( ev.mouse.x >= 0 && ev.mouse.x <= 31 && ev.mouse.y >= 0 && ev.mouse.y <= 31 ) {
        al_draw_bitmap( IkonaEkwipunku, 0, 0, 0 );
        al_draw_text( Courier, al_map_rgb( 255, 255, 255 ), 10, 45, ALLEGRO_ALIGN_LEFT, "Ekwipunek" );
    } else {
        al_draw_bitmap( IkonaEkwipunku, 0, 0, 0 );
    }
    if( ev.mouse.x >= 32 && ev.mouse.x <= 63 && ev.mouse.y >= 0 && ev.mouse.y <= 31 ) {
        al_draw_bitmap( IkonaStatystyk, 32, 0, 0 );
        al_draw_text( Courier, al_map_rgb( 255, 255, 255 ), 10, 45, ALLEGRO_ALIGN_LEFT, "Statystyki" );
    } else {
        al_draw_bitmap( IkonaStatystyk, 32, 0, 0 );
    }
    if( ev.mouse.x >= 64 && ev.mouse.x <= 95 && ev.mouse.y >= 0 && ev.mouse.y <= 31 ) {
        al_draw_bitmap( IkonaMapy, 64, 0, 0 );
        al_draw_text( Courier, al_map_rgb( 255, 255, 255 ), 10, 45, ALLEGRO_ALIGN_LEFT, "Mapa" );
    } else {
        al_draw_bitmap( IkonaMapy, 64, 0, 0 );
    }
    if( ev.mouse.x >= 96 && ev.mouse.x <= 128 && ev.mouse.y >= 0 && ev.mouse.y <= 31 ) {
        al_draw_bitmap( IkonaWyjscia, 96, 0, 0 );
        al_draw_text( Courier, al_map_rgb( 255, 255, 255 ), 10, 45, ALLEGRO_ALIGN_LEFT, "Zakoncz gre" );
    } else {
        al_draw_bitmap( IkonaWyjscia, 96, 0, 0 );
    }
   
    (...)
   
    al_get_keyboard_state( & StatusKlawiatury );
   
    if( PrzesunX >= 64 && PrzesunX <= 160 ) {
        if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_RIGHT ) ) {
            PrzesunX += 4;
            PostacX += 3;
            al_rest( 0.1 );
        }
        if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_LEFT ) ) {
            PrzesunX -= 4;
            PostacX -= 3;
            al_rest( 0.1 );
        }
    } else {
        if( PrzesunX <= 64 ) {
            if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_RIGHT ) ) {
                PrzesunX += 4;
                PostacX += 3;
                al_rest( 0.1 );
            }
        }
        if( PrzesunX >= 160 ) {
            if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_LEFT ) ) {
                PrzesunX -= 4;
                PostacX += 3;
                al_rest( 0.1 );
            }
        }
    }
    if( PrzesunY >= - 192 && PrzesunY <= 0 ) {
        if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_DOWN ) ) {
            PrzesunY += 4;
            PostacY += 2;
            al_rest( 0.1 );
        }
        if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_UP ) ) {
            PrzesunY -= 4;
            PostacY -= 2;
            al_rest( 0.1 );
        }
    } else {
        if( PrzesunY <= - 192 ) {
            if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_DOWN ) ) {
                PrzesunY += 4;
                PostacY += 2;
                al_rest( 0.1 );
            }
        }
        if( PrzesunY >= 0 ) {
            if( al_key_down( & StatusKlawiatury, ALLEGRO_KEY_UP ) ) {
                PrzesunY -= 4;
                PostacY -= 2;
                al_rest( 0.1 );
            }
        }
    }
   
    al_flip_display();
} while( !al_key_down( & StatusKlawiatury, ALLEGRO_KEY_ENTER ) );

Mój problem polega na tym, że mam 4 menu do wyboru myszką i postać która porusza się poprzez klawiaturę... Postać nie może się ruszyć dopóki nie ruszę myszką... A jak ruszam myszką to na mapie pojawiają się obrazki ,które nie są nawet używane (zadeklarowane, ale ani razu nie używane)...

Jak to naprawić?
P-58024
SeaMonster131
» 2012-06-07 19:04:39
Hm.. może dlatego że eventy odbierasz jako ruszanie myszką. Zrób myszke podobnie jak klawiature:
C/C++
ALLEGRO_MOUSE_STATE mouse;
// w petli:
al_get_mouse_state( & mouse );

if( mouse.x >= 10 && mouse.y >= 20 && mouse.buttons == 1 ) { }
P-58025
Temes
Temat założony przez niniejszego użytkownika
» 2012-06-07 19:18:53
Dzięki wielkie ^^
Ja korzystałem z eventów, bo pisali tak w starym poradniku o ALLEGRO 5, ale widzę, że są lepsze sposoby :)
Dzięki jeszcze raz
P-58027
« 1 »
  Strona 1 z 1