[C++] kbhit - switch
Ostatnio zmodyfikowano 2016-02-03 14:04
Harion Temat założony przez niniejszego użytkownika |
[C++] kbhit - switch » 2016-02-03 13:52:56 Witajcie, mam mały problem. Robię funkcję do wprowadzania danych z klawiatury, w sensie MENU. Wszystko śmiga jak należy jednak zastanawiam się jak rozwiązać problem w przypadku "down użytkownika" który będzie walił bezmyślnie rękami w klawiaturę. Gdy wciśniemy kilka przycisków na raz to nieraz pętla się wiesza, tak jak by bufor się zapychał czy coś w tego rodzaju (muszą być to klawisze z zakresu deflaut switcha, bo w przypadku liczb 1-5 kończymy funkcję), przy takim zawieszeniu ciągle wypisywane jest na konsole "Wrong key" Wiecie jak to rozwiązać? Bo ja już nie mam pomysłu. Oto kod: void menuLoadGame() { int numberFalse = 1; int key; printLoadGame(); for(;; ) { if( _kbhit ) { key = _getch(); numberFalse = 0; switch( key ) { case '1': cout << "[1] Start Game" << endl; break; case '2': cout << "[2] Start Game" << endl; break; case '3': cout << "[3] Start Game" << endl; break; case '4': cout << "[4] Start Game" << endl; break; case '5': cout << "[5] Start Game" << endl; break; case 'ESC': cout << "[6] Start Game" << endl; break; default: numberFalse = 1; cout << "\rWrong key!"; Sleep( 300 ); cout << "\r \r"; break; } if( !numberFalse ) break; } } }
Dziękówa za pomoc! PS. Małe pytanko jeszcze, czy nie używając żadnych bibliotek typu WinAPI itp, można sterować pozycją kursora w konsoli? Tak jak np /r powraca na początek linii, czy jest coś co by mogło np przenosić kursor linię wyżej? |
|
pekfos |
» 2016-02-03 14:04:46 Nie możesz zrobić czegoś takiego. przy takim zawieszeniu ciągle wypisywane jest na konsole "Wrong key" |
Opróżnij bufor po zakończeniu wyświetlania tego komunikatu. Małe pytanko jeszcze, czy nie używając żadnych bibliotek typu WINapi itp, można sterować pozycją kursora w konsoli? Tak jak np /r powraca na początek linii, czy jest coś co by mogło np przenosić kursor linię wyżej? |
Bez dodatkowych bibliotek się nie da, a za takie mordowanie tego skrótu, powinieneś się za karę zapoznać z WinAPI. Użycie jednej funkcji z biblioteki, którą i tak wykorzystujesz w programie, to chyba nie jest zbyt trudne. |
|
« 1 » |