If sprawdzający czy uzytkownik zdążyl wcisnąc klawisz.

Odpowiedz Nowy wątek
2018-04-19 16:07
0

Witam
Czy da się zrobić if'a który sprawdzi czy klawisz np. "w" został naciśnięty w określonym czasie?

for(;;)
{
znak=getch()
cout << "Kliknij w kiedy wyskoczy gwiazdka"<<endl;
sleep(1500);
cout << "*"<<endl;
switch(znak)
if (nie_wiem_jaki_warunek )
     {
   case 'w':
        cout << "Zdazyles"

     }
     else 
        cout << "Sprobuj raz jeszcze"<<endl;
}
edytowany 1x, ostatnio: kq, 2018-04-19 16:29

Pozostało 580 znaków

2018-04-19 16:29
kq
1

Nie za pomocą standardowych funkcji obsługi wejścia/wyjścia. Ale na windowsie i linuksie są na to sposoby, tylko pytanie gdzie chcesz to sprawdzić.


Pozostało 580 znaków

2018-04-19 17:33
1

Jeśli synchronicznie i niezależne od systemu to proste:

#include <chrono>
#include <iostream>

int main() {
    char c;
    auto timeSlot = std::chrono::seconds(3);
    std::cout << "Naciśnij enter w przeciągu " << timeSlot.count() << " sekund.\n";
    auto start = std::chrono::high_resolution_clock::now();
    std::cin >> std::noskipws >> c;
    auto stop = std::chrono::high_resolution_clock::now();

    auto diffTime = std::chrono::duration_cast<std::chrono::seconds>(stop - start);
    if(diffTime > timeSlot) {
        std::cout << "Nacisnąłeś enter po czasie.\n";
    } else {
        std::cout << "Dziękuję. Enter wprowadzony o czasie.\n";
    }
}

Każdy problem w informatyce można rozwiązać, dodając kolejny poziom pośredniości,z wyjątkiem problemu zbyt dużej liczby warstw pośredniości — David J. Wheeler
to nie ma prawa działać zgodnie z oczekiwaniem, z powodu tego jak działa plik konsoli. Jedyny sposób to pominięcie pliku konsoli i odniesienie się bezpośrednio do klawiatury, co w standardzie C++ nie jest dostępne. - MarekR22 2018-04-20 01:46
Źródło z informacją że nie działa bo działa. Oczywiście synchronicznie i czekając na wciśnięcie. Asynchron tylko systemowo. - Mokrowski 2018-04-20 08:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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