Czy istnieje polecenie, które czeka aż wciśniesz klawisz przez dany czas?
Ostatnio zmodyfikowano 2016-12-09 09:51
DODO Temat założony przez niniejszego użytkownika |
Czy istnieje polecenie, które czeka aż wciśniesz klawisz przez dany czas? » 2016-12-03 10:37:42 Witam.
Ostatnio napisałem prostą konsolową gierkę, gdzie sterujesz swoją postacią i masz złapać bota. Działa to na zasadzie wprowadzenia znaku z klawiatury (w, s, a lub d). Program wtedy przesuwa twoją postać w danym kierunku oraz bota w losowym kierunku. Ale zamiast " nazwa_zmiennej=getch(); " chciałbym użyć polecenia które np. da ci sekundę na wciśnięcie klawisza.
Czy istnieje takie polecenie? |
|
Gibas11 |
» 2016-12-03 11:51:32 Pętla powtarzana przez sekundę z sprawdzaniem kbhit() powinna to ogarnąć. Pseudokod: Clock zegar; while( zegar.getTime().seconds() < 1.f ) { if( kbhit() ) { przycisk = getch(); break; } }
//edit http://imgur.com/a/aENNy |
|
DODO Temat założony przez niniejszego użytkownika |
» 2016-12-03 12:07:18 Jakie są potrzebne biblioteki? |
|
Gibas11 |
» 2016-12-03 12:12:20 Do kbhit wystarczy plik nagłówkowy conio.h (jesteś na Windowsie, nie?) a do mierzenia czasu możesz użyć std::chrono z biblioteki standardowej. |
|
DODO Temat założony przez niniejszego użytkownika |
» 2016-12-03 12:14:07 Tak, jestem na windowsie. Dzięki! |
|
DODO Temat założony przez niniejszego użytkownika |
» 2016-12-07 12:39:32 "'Clock' was not declared in this scope" |
|
carlosmay |
» 2016-12-07 13:54:28 "'Clock' was not declared in this scope" |
Oczekujesz, że... |
|
czaffik |
» 2016-12-07 14:02:17 To co napisał Gibas11 na temat biblioteki chrono też coś mi nie działa, albo źle patrze albo nie wiem, tak czy inaczej możesz se napisać własny zegar na podstawie tej biblioteki: #include <chrono> using namespace std;
class Clock { public: Clock() { start = chrono::high_resolution_clock::now(); } ~Clock() { } float secondsElapsed() { auto stop = chrono::high_resolution_clock::now(); return chrono::duration_cast < chrono::seconds >( stop - start ).count(); } void reset() { start = chrono::high_resolution_clock::now(); } private: chrono::time_point < chrono::high_resolution_clock > start; };
Dotyczy tylko standardu c++11 |
|
« 1 » 2 |