wyjście z pętli for po naciśnięciu klawisza
Ostatnio zmodyfikowano 2012-08-13 21:45
NHFL Temat założony przez niniejszego użytkownika |
wyjście z pętli for po naciśnięciu klawisza » 2012-08-13 09:04:16 witam jak wyjść z pętli for po naciśnięciu konkretnego klawisza? wiem co prawda ze istnieje coś takiego if(kbhit())break; ale mnie interesuje jak wyjść z pętli naciskając np "M" ps korzystam z dev |
|
pjpeg_objected |
» 2012-08-13 09:24:34 #include <conio.h>
int main() { bool Run = true; char znak; while( Run ) { znak = getch(); if( znak == 'a' ) Run = false; } return 0; }
|
|
NHFL Temat założony przez niniejszego użytkownika |
» 2012-08-13 09:43:49 nie o to mi chodziło.. tak jak napisałem we wstępie pętla FOR a nie WHILE do tego w moim programie jest funkcja SLEEP co uniemozliwia wczytanie znaku z zewnątrz przy pomocy CIN czy przez przeriobione GETCH. Powiedzmy ze z buta chciałbym przerwać działanie pętli ;) |
|
jankowalski25 |
» 2012-08-13 10:21:39 |
|
Mrovqa |
» 2012-08-13 14:52:22 Tak po prostu 'z buta' z pętli nie da się wyjść. Musisz napisać instrukcje, które to zrobią. Możesz użyć WinAPI (bodaj GetKeyState czy tam GetAsyncKeyState - rozwiązanie tylko pod Windowsa), które sprawdzają, czy w danym momencie konkretny klawisz jest naciśnięty. tak jak napisałem we wstępie pętla FOR a nie WHILE |
To jest bez różnicy przecież... a nawet jeśli coś Ci nie pasuje, to czy aż tak trudno jest rozwiązanie przerzucić do innej pętli? |
|
kubawal |
» 2012-08-13 14:56:54 Jeśli chcesz, żeby program się wykonywał, a sprawdzanie klawisza było osobno prowadzone, to poczytaj o wątkach. Możesz to tak wykorzystać: volatile bool AppIsOn = true;
void sprawdz( void ) { while( AppIsOn ) { if( getch() == 'M' ) AppIsOn = false; } }
int main( void ) { CreateThread( sprawdz ); for( int i = 0; i < 6 && AppIsOn == true; i++ ) { } return 0; }
|
|
Mrovqa |
» 2012-08-13 15:11:02 @up bez sensu jest wykonać to w osobnym wątku - i tak, by nie obciążać procka wrzuciłby tam sleepa - a żeby wyjść z pętli w innym wątku to musiałby sprawdzać jakąś dodatkową zmienną. Po prostu bezsensownie przekombinowane. |
|
OSA_PL |
» 2012-08-13 19:35:12 #include <conio.h>
int main() { for(;; ) { if( kbhit() ) if( getch() == 'q' ) break; } return 0; }
|
|
« 1 » 2 |