Czas

2016-06-20 08:38
Jacek Labudda
												W grach czasu rzeczywistego, praca bez timer 'a była by wręcz niemożliwa.
Prędkość gry nie może być różna. 
Jak na słabszym(ok. 60fps) tak i na lepszym(>60fps) sprzęcie, dane zadanie powinno wykonywać się taką samą ilość czasu.
Nie będę przedstawiał w tej lekcji jak stworzyć limit klatek.
Znajdzie się to niedługo w artykule będącym częścią kursu tworzenia gier.

Zajmujemy się teraz tylko pobieraniem czasu.

Czas rzeczywisty

Funkcja clock() zwraca czas w milisekundach jaki upłynął od uruchomienia procesu. Wcześniej należy załączyć bibliotekę standardową ctime. Przykład:
#include <iostream> #include <Windows.h> #include <ctime> using namespace std; int main(){ while(1){ system("cls"); cout << "Czas pracy programu: " << clock()/1000 << endl; } return 0; }
Wynik: Czas pracy programu: X Warto jeszcze wspomnieć o funkcji time(time_t*), która zwraca czas lokalny w sekundach, jaki upłynął od 1 stycznia 1970 roku.

Czas systemowy oraz lokalny

Mamy możliwość pobrania czasu oraz daty taki jaki mamy w systemie. Służą do tego dwie funkcje:
GetLocalTime(/*obiekt struktury SYSTEMTIME*/);//pobiera czas lokalny GetSystemTime(/*obiekt struktury SYSTEMTIME*/);//pobiera czas systemowy
Dane definiowane są poprzez referencje. Struktura SYSTEMTIME przechowuje takie dane jak rok, miesiąc, dzień tygodnia[0-6] 0=niedziela 6=sobota, dzień, godzina, minuta, sekunda i milisekunda:
typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME;
Dane pobierane są jednorazowo, podczas uruchomienia programu. Przykład użycia:
#include <iostream> #include <Windows.h> using namespace std; int main(){ SYSTEMTIME st; GetSystemTime(&st); cout << st.wDay << "." << st.wMonth << "." << st.wYear << " " << st.wHour << ":" << st.wMinute << endl; return 0; }
Zadanie: Zadanie jest w sumie proste. Korzystając z funkcji poznanych w powyższej lekcji napisz program pokazujący obecną godzinę, minutę i sekundę. W momencie, gdy dana wartość będzie mniejsza od 10 to przed liczbą wypisuj dodatkowe 0. Działanie na zasadzie zegarka[format: 00:00:00]. Powodzenia! Rozwiązanie

Użytkownicy
Logowanie:
Zaloguj
Polub nas na facebooku
Wyszukiwanie na stronie