Dark Dragon utworzono 5 grudnia 2010 utworzono 5 grudnia 2010 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 5 grudnia 2010 komentarz 5 grudnia 2010 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. 1
Dark Dragon komentarz 5 grudnia 2010 Autor komentarz 5 grudnia 2010 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 6 grudnia 2010 komentarz 6 grudnia 2010 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 , trzeba zmienić kolejność odejmowania: [code] double czas = x - GetTickCount(); //zle double czas = GetTickCount() - x; //dobrze [/code] 1
Dark Dragon komentarz 7 grudnia 2010 Autor komentarz 7 grudnia 2010 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.