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

Allegro wciskanie/puszczanie klawisza.

Ostatnio zmodyfikowano 2012-01-24 19:07
Autor Wiadomość
unimator
Temat założony przez niniejszego użytkownika
Allegro wciskanie/puszczanie klawisza.
» 2012-01-24 18:53:33
Witam
Próbuje zrobić Menu, po którym to użytkownik porusza się za pomocą KEY UP/DOWN. Samo "wyciąganie" klawisza z bufora wygląda tak:
C/C++
while( true )
{
    if(( key[ KEY_UP ] ) )
    {
        if(( wsk_lvl > 0 ) /*&& press*/ )
        {
            /* część instrukcji odpowiedzialnych za poruszanie się w menu */
        }
    }
   
    /*if(!(keypressed()) press = true;*/
}
Problem jest taki, że jak wcisnę i puszczę UP to pętla zdąży się wykonać np. z 10 razy, bo czas jaki trzymam UP (są to setne części sekundy) jest równy tym 10 obrotom pętli. Jeśli ciężko to zrozumieć, to podobny efekt otrzymamy przytrzymując Enter - kursor przeskoczy nam o kilka linijek w dół, a nie o jedną. U mnie wystarczy krócej przytrzymać przycisk.

Kombinowałem zrobić coś samemu (dodając to co jest w komentarzu) ale ten if w komentarzu nie spełnia się, bo w buforze są nadal jakieś znaki. Próbowałem też pomóc sobie funkcję clear_keybuf() (czyści ona bufor), ale gdzie bym jej nie wsadził, nie pomagało.

Jeśli macie jakieś pomysły, jak to zrobić, by po wciśnięciu klawisza program rejestrował też jego odciśnięcie (bo to o to chodzi, chyba) to proszę byście się ze mną nimi podzielili :)
P-49334
pekfos
» 2012-01-24 19:00:43
key[X] nie ma nic wspólnego z buforem :P

C/C++
bool tmp = true;
//..
if( key[ X ] && tmp ) {
    //..
    tmp = false;
}
if( !key[ X ] ) tmp = true;
P-49339
unimator
Temat założony przez niniejszego użytkownika
» 2012-01-24 19:07:13
A to teraz wszystko jasne, ja byłem pewny, że to wina bufora :D Dzięki, pomogło.
P-49342
« 1 »
  Strona 1 z 1