Funkcja sprawdzająca "wciśnięcie klawisza"

0

Witam, mam mały problem.
Chcę się doradzić jak w c++ sprawdzić czy dany klawisz jest aktualnie wciskany ("zapadnięty :) ") - nie, że odczytuje jaki klawisz został wciśnięty i tyle ale żeby do zmiennej "klawisz" przypisywany był aktualnie wciskany klawisz. Jeżeli nasza ręka nie dotyka klawiatury to wiadomo zmienna jest pusta. Mam nadzieję, że ktoś zrozumie moje przesłanie :)
Proszę bardzo o na kierunkowanie mnie w jaki sposób to rozwiązać. Z góry dziękuje bardzo.

0

Hm znak (klawisz) wczytuje się funkcją getchar(), można by w jakieś "nieskończonej pętli" przypisywać go do zmiennej (np znak=getchar();), wcześniej ją "zerując", generalnie zmienna nie może nie mieć wartości (ma ją nawet po deklaracji, tyle że losową zanim nadasz jej jakąś wartość). Napisz może co dokładnie chcesz osiągnąć.

0

Funkcja kbhit( ) z biblioteki conio.h, albo jak pracujesz na linuxie to biblioteka ncurses

0

Robię program do sterowania silnikami przez port LTP, napisałem funkcje która uruchamia mi te silniki ale potrzebuje nimi sterować w "czasie rzeczywistym".
Potrzebuje teraz zrobić coś takiego:

if(a_jest_wcisniete)
{
        ustaw_port_lewo();   // i działaj dopóki klawisz jest wciśnięty (silnik się kręci)
}
zeruj_port();   // puszczam klawisz i się nie kręci 

0

Biblioteka conio.h ( zaraz zostanę zbesztany, że nie pokazuję Ci przykładu na NCurses )

if( kbhit( ) )
     key = getch( );
     if( key == 'a' )
          ustaw_por_lewo( );
zeruj_port( );
0
MJay napisał(a)

Biblioteka conio.h ( zaraz zostanę zbesztany, że nie pokazuję Ci przykładu na NCurses )

if( kbhit( ) )
     key = getch( );
     if( key == 'a' )
          ustaw_por_lewo( );
zeruj_port( );
 
char key;
if( kbhit( ) )
{
     key = getch( );
     if( key == 'a' )
     {
          set_port_lewo( );
          std::cout<<"ustawiono w lewo";
          }

}   
system("pause");  
}

Wielkie dzięki, nie wiem dlaczego mi nie działa program od razu przechodzi do system("pause");

0

Bo kbhit nie czeka na klawisz tylko sprawdza czy jest dostępny w buforze.

0

Tak jak sarrus powiedział, zrób to w pętli i dla jakiejś wartości key po prostu wpisz break;

1 użytkowników online, w tym zalogowanych: 0, gości: 1