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

[ Allegro5 ] Czyszczenie bufora klawiatury.

Ostatnio zmodyfikowano 2021-11-26 15:48
Autor Wiadomość
marianekA
Temat założony przez niniejszego użytkownika
[ Allegro5 ] Czyszczenie bufora klawiatury.
» 2021-11-23 18:07:07
Koledzy, przepisałem moją starą grę napisaną w  Allegro4 gdzie używałem funkcji  
clear_keybuf()
 i nie potrafię poradzić sobie z tym w Allegro5.
Jakaś podpowiedź mile widziana.
P-179084
pekfos
» 2021-11-23 19:41:19
Potrzebujesz zamiennika, czy chodzi tylko o to że takie wywołanie było w poprzedniej wersji? Jeśli używałeś bufora klawiatury, to czym zastąpiłeś readkey()?
P-179085
marianekA
Temat założony przez niniejszego użytkownika
» 2021-11-23 20:52:26
Tak w skrócie:
C/C++
//...
ALLEGRO_EVENT ev; // zdarzenia  
ALLEGRO_EVENT_QUEUE * event_queue = al_create_event_queue(); al_register_event_source( event_queue, al_get_keyboard_event_source() );
//...
int klawisz; // nr wcisniętego klawisza
al_get_next_event( event_queue, & ev );
//...

klawisz = ev.keyboard.unichar;
P-179086
pekfos
» 2021-11-23 21:31:46
Ale w jakim celu było clear_keybuf() w starym kodzie? Używałeś blokującego readkey()? I co znaczy "w skrócie"? al_get_next_event() nie czeka na zdarzenie, więc musisz sprawdzić zwracaną wartość.
P-179087
marianekA
Temat założony przez niniejszego użytkownika
» 2021-11-24 09:38:31
Nie używałem readkey() tylko ureadkey().

Bez tego: al_get_next_event( event_queue, & ev ); nie odczytuje mi kodu wciśniętego klawisza   klawisz = ev.keyboard.unichar;

... a chodzi mi tylko o możliwość czyszczenia buforu klawiatury z poziomu Allegro5.
P-179088
pekfos
» 2021-11-24 17:39:32
Bez tego: al_get_next_event( event_queue, & ev ); nie odczytuje mi kodu wciśniętego klawisza   klawisz = ev.keyboard.unichar;
Napisałem że musisz sprawdzać zwracaną wartość z tej funkcji.
Take the next event out of the event queue specified, and copy the contents into ret_event, returning true. The original event will be removed from the queue. If the event queue is empty, return false and the contents of ret_event are unspecified.
https://www.allegro.cc/manual/5/al_get_next_event

Jeśli faktycznie masz osobną kolejkę tylko na zdarzenia z klawiatury, to pewnie zamiennikiem ureadkey() będzie al_wait_for_event(), a clear_keybuf() możesz zaimplementować jako wywoływanie al_get_next_event() w pętli aż do opróżnienia kolejki, ignorując zdarzenia które tam były.
P-179089
marianekA
Temat założony przez niniejszego użytkownika
» 2021-11-24 20:37:51
No wreszcie coś konkretnego pekfos... nie wszystko rozumiem należycie a to z braku znajomości angielskiego, w moim wieku już za późno na jego naukę. Jutro się za to zabiorę bo dziś trochę kiepsko się czuję. Miłego wieczoru i jeszcze raz dziękuję.
P-179090
marianekA
Temat założony przez niniejszego użytkownika
» 2021-11-26 15:48:55
Już wszystko OK. Dziękuję za pomoc.
P-179093
« 1 »
  Strona 1 z 1