x-kom hosting

[C++]Odliczanie czasu

Dark Dragon
utworzono
utworzono

Hej
Mam taki problem, mianowicie chodzi o te, ze chcialem napisac taka gierke w C++ w konsoli, w ktorej trzeba wpisac poprawnie losowe slowo przed uplynieciem czasu.
Oto kod ktory dotychczas napisalem:
[code]#include <iostream>
#include <ctime>
#include <windows.h>
using namespace std;

int main(void)
{
char programowanie[]="programowanie";
char programista[]="programista";
char program[]="program";
char *slowo = new char[20];

int Punkty = 0;
int a;

while(true)
{
srand((int) time(NULL));
a = rand() % 3 + 1;

if(a==1)
{
cout << programowanie << endl;
cin >> slowo;
if(strcmp(slowo, programowanie)==0)
{
++Punkty;
cout << "Punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
else
{
--Punkty;
cout << "Punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
}
else if(a==2)
{
cout << programista << endl;
cin >> slowo;
if(strcmp(slowo, programista)==0)
{
++Punkty;
cout << "Punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
else
{
--Punkty;
cout << "punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
}
else if(a==3)
{
cout << program << endl;
cin >> slowo;
if(strcmp(slowo, program)==0)
{
++Punkty;
cout << "Punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
else
{
--Punkty;
cout << "Punkty: " << Punkty << endl;
Sleep(1000);
system("cls");
}
}
else
cout << "Program nigdy nie powinien tutaj dojsc!\n";
}
}[/code]

Moj problem polega na tym ze nie wiem co zrobic aby program odliczal jakis czas w sekundach i przed uplywem tego czasu uzytkownik musial wpisac slowo. Ten czas to najlepiej gdyby byla wartosc jakiejs zmiennej double.

PS. jesli taki temat byl juz gdzies na forum to przepraszam i prosze o podanie do niego linku

tom300
komentarz
komentarz

Możesz użyć funkcji GetTickCount() - pobiera czas od rozpoczęcia działania programu. Np.
[code]
double x = GetTickCount();

//Tutaj czekasz aż użytkownik wpisze to słowo

double czas = x - GetTickCout(); // A tutaj będzie podane ile czasu zajęło użytkownikowi wpisywanie tego słowa.
[/code]

W tym przypadku program będzie musiał czekać aż użytkownik coś wpisze i nic nie będzie mógł przez ten czas zrobić. Jeżeli chcesz na bieżąco informować użytkownika ile czasu mu pozostało, będziesz musiał pokombinować z wątkami, ale sprawa się wtedy bardziej komplikuje.

  • Dobra wypowiedź 1
tom300
komentarz
komentarz (edytowane)

/// Post wysłał się dwa razy

Dark Dragon
komentarz
komentarz

Czyli przykladowy programik z uzyciem tej funkcji wygladalby tak?
[code]#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;

int main()
{
char slowo[20];
cout << "Wpisz jakies slowo:\n";
double x = GetTickCount();
cin >> slowo;
double czas = x - GetTickCount();
cout << "Wpisanie tego slowa zajelo ci: " << czas << endl;
getch();
}[/code]

tom300
komentarz
komentarz

Tak, z tym że czas będzie podany w milisekundach (ale wystarczy podzielić przez 1000 by otrzymać sekundy).
I jeszcze mały błąd popełniłem :D , trzeba zmienić kolejność odejmowania:
[code]
double czas = x - GetTickCount(); //zle
double czas = GetTickCount() - x; //dobrze
[/code]

  • Dobra wypowiedź 1
Dark Dragon
komentarz
komentarz

Ok dzieki za pomoc temat zamkniety

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.