Permalänk

Reaktions spel med tid

Hejsan!

Jag är nybörjare på programmering och läser en kurs med språk C++. Jag har en uppgift med att göra en reaktions spel där användaren ska trycka på enter och få upp en tid på hur lång reaktionstiden var. (GetTickCount)

Nu är frågan hur kodar man delen då efter man skrivit cout << "NU"; (efter att NU kommer upp på skärmen ska användaren trycka på enter så fort så möjligt xD)

Det som jag vill ska hända efter NU:
1: att tiden ska räknas
2: användaren stoppar/pausar/trycker på enter osv...
3: tiden stoppas
4: samt att tiden kommer upp på skärmen efter.

OBS! Har en mac os, så alla lösningar med som funkar på mac tar jag gärna emot och jobbar på Visuell Studio Code.

Tusen tack i förhand och ni som har hjälpt eller försökt är guldvärda!!!

Permalänk
Medlem

Du vet ju hur du ska lösa problemet? Var har du fastnat?

Efter att "NU" har visats upp för spelaren så
- starta tiden t ex long int startTimer = GetTickCount();
- lyssna efter input från användaren ( t ex enter)
- stoppa tiden long int endTimer = GetTickCount();
- räkna ut millisekunder int totalTime = (startTimer - endTimer )
- Visa totalTime för spelaren

Vill du visa ut annat än millisekunder får du dela med t ex 1000 för sekunder (startTimer - endTimer ) / 1000

Obs, jag kan inte c++ men bör vara något åt det här hållet.

Visa signatur

"Happiness is only real when shared"

Permalänk
Skrivet av sebbeharry:

Du vet ju hur du ska lösa problemet? Var har du fastnat?

Efter att "NU" har visats upp för spelaren så
- starta tiden t ex long int startTimer = GetTickCount();
- lyssna efter input från användaren ( t ex enter)
- stoppa tiden long int endTimer = GetTickCount();
- räkna ut millisekunder int totalTime = (startTimer - endTimer )
- Visa totalTime för spelaren

Vill du visa ut annat än millisekunder får du dela med t ex 1000 för sekunder (startTimer - endTimer ) / 1000

Obs, jag kan inte c++ men bör vara något åt det här hållet.

Jag vet vad jag vill ha men inte hur man gör det. Jag testade som du skrev men de verkar inte funka plus att det blir rödmarkerat, vilket innebär att nånting inte stämmer :´)

Ja, jag vill även att det ska visas i millisekunder

Permalänk
Medlem

Som sagt, det där var bara för att peka dig åt rätt riktning. Vad har du skrivit för kod?

Visa signatur

"Happiness is only real when shared"

Permalänk
Skrivet av sebbeharry:

Som sagt, det där var bara för att peka dig åt rätt riktning. Vad har du skrivit för kod?

#include <iostream>
#include <chrono>
#include <thread>
#include <cstdlib>
#include <string>
#include <unistd.h>

using namespace std;

int main()
{
cout << "Be ready to type ENTER" << endl; // Text på skärmen

this_thread::sleep_for(chrono::milliseconds(rand() % 3000 + 10000)); // Tiden ska slumpas mellan 3 sek till 10 sek
srand(time(NULL)); // slumpar random nummer

cout << "NOW!\n" << endl;

// Här vill jag att tiden ska starta och när användaren trycker på enter så stoppas tiden och tiden ska komma ut

cout << "Din reaktionstid är:" << endl;

* Detta har jag alltså kommit fram till och resten har jag bara fastnat och kommer inte vidare på.

Permalänk
Medlem

Har du testat att googla på exempelvis:

start timer in c++
measure elapsed time in c++

För att se hur du får till tidsmätningen.

I stort sett alla som arbetar som utvecklare googlar för att få fram lösningar på både svåra och enkla problem hela tiden, för man kan inte hålla allt i huvudet så även sånt här lär många behöva kolla upp nästan varje gång oavsett språk.
Utan att kunna c++ alls kunde jag googla mig fram till varje del och lösa uppgiften.