[Allegro 5] Oczekianie na zwolnienie klawisza klawiatury
Ostatnio zmodyfikowano 2015-03-24 18:15
marianekA Temat założony przez niniejszego użytkownika |
[Allegro 5] Oczekianie na zwolnienie klawisza klawiatury » 2015-03-24 14:37:18 Nie wiem czy dobry napisałem temat ale może nikt się nie przyczepi. Chodzi mi oto żeby program oczekiwał na zwolnienie wciśniętego klawisza klawiatury. Jak to zrobić w przypadku klawisza myszki to wiem a w przypadku klawiatury to nie wiem. Poniżej przykład z rozwiązaniem dla myszki a dla klawiatury czeka na Waszą pomoc #include <allegro5/allegro.h> ALLEGRO_KEYBOARD_STATE klaw; ALLEGRO_MOUSE_STATE mysz; ALLEGRO_EVENT ev; int main() { al_init(); al_install_mouse(); al_install_keyboard(); ALLEGRO_DISPLAY * okno = al_create_display( 400, 200 ); while( !al_key_down( & klaw, ALLEGRO_KEY_ESCAPE ) ) { al_get_keyboard_state( & klaw ); al_get_mouse_state( & mysz ); if( mysz.buttons == 1 ) { al_clear_to_color( al_map_rgb( 111, 0, 0 ) ); al_flip_display(); while( !mysz.buttons == 0 ) al_get_mouse_state( & mysz ); al_clear_to_color( al_map_rgb( 0, 111, 0 ) ); } if( al_key_down( & klaw, ALLEGRO_KEY_SPACE ) ) { al_clear_to_color( al_map_rgb( 111, 0, 0 ) ); al_flip_display(); al_clear_to_color( al_map_rgb( 0, 111, 0 ) ); } al_flip_display(); } return 0; }
. |
|
maly |
» 2015-03-24 15:25:00 Takie coś? while( al_key_down( & klaw, ALLEGRO_KEY_SPACE ) ) al_get_keyboard_state( & klaw ); Jednak wydaje mi się że lepiej użyć eventów zamiast sprawdzać stan. |
|
marianekA Temat założony przez niniejszego użytkownika |
» 2015-03-24 16:05:59 Sprawdziłem...działa tak jak chciałem i to mi wystarczy. Mały, wielkie dzięki za odpowiedź i radę. Temat zamykam. |
|
marianekA Temat założony przez niniejszego użytkownika |
» 2015-03-24 16:53:27 Jeszcze jedno... jak to przerobić by działało z dowolnym klawiszem a nie z wybranym jak w przykładzie. Dosłownie: jeśli żaden nie jest wciśnięty... |
|
maly |
» 2015-03-24 17:30:26 Poprostu sprawdzić stan dla każdego klawisza lub jak wspomniałem wcześniej użyć eventów. bool keypressed() { ALLEGRO_KEYBOARD_STATE klaw; al_get_keyboard_state( & klaw ); for( int i = ALLEGRO_KEY_A; i < ALLEGRO_KEY_MAX; ++i ) if( al_key_down( & klaw, i ) ) return true; return false; } |
|
marianekA Temat założony przez niniejszego użytkownika |
» 2015-03-24 18:15:28 już wszystko jasne, jeszcze raz dzięki. |
|
« 1 » |