[SFML] Mierzenie i wyświetlenie czasu gry na ekranie
Ostatnio zmodyfikowano 2015-07-26 22:55
pw1602 Temat założony przez niniejszego użytkownika |
[SFML] Mierzenie i wyświetlenie czasu gry na ekranie » 2015-07-26 21:25:31 Siemka. Nie mogę zrozumieć w jaki sposób mogę wyświetlić czas gry na ekranie lub po prostu mierzyć go, aby aktualizować ruch postaci lub figury. Najpierw pobieram czas jaki minął i zapisuję go do zmiennej w sekundach: sf::Clock zegar; sf::Time czas = zegar.getElapsedTime(); int i = czas.asSeconds(); Potem zapisuję tą zmienną do stringa: std::string std = ss.str(); sf::Text pokaz_czas; pokaz_czas.setString( std ); pokaz_czas.setPosition( okno.getSize().x / 2 - pokaz_czas.getGlobalBounds().width / 2, okno.getSize().y / 2 ); pokaz_czas.setFont( czcionka ); pokaz_czas.setCharacterSize( 30 ); Na koniec wyświetlam po prostu napis na ekranie: okno.clear();
if( i >= 1 ) { okno.draw( pokaz_czas ); zegar.restart(); }
okno.display(); I tutaj pojawia się problem, bo nic się nie wyświetla i nie mogę rozwiązać tego problemu. Mógłby mi ktoś pomóc i wyjaśnić, jak to zrobić i gdzie mam błąd? Wielkie dzięki za pomoc. |
|
pekfos |
» 2015-07-26 21:51:29 if( i >= 1 ) { okno.draw( pokaz_czas ); zegar.restart(); }
|
Wywal draw() przed if. |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2015-07-26 22:37:52 Wyświetla się jedynie zero. Problemem może być, że czas po osiągnięciu 1 sekundy zostaje zresetowany i int i = czas.asSeconds(); przyjmuje wartość 0?! |
|
Lora |
» 2015-07-26 22:43:53 Zamień int na float. Wartość, którą pobierasz z zegara jest cały czas mniejsza od jeden i int ucina to do zera (po co w ogóle restartujesz ten zegar?). |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2015-07-26 22:55:23 Działa. Chciałem mieć int ze względu, aby nie było żadnych licz po przecinku, bo w końcu miał być to czas gry ;) Tutaj akurat dałem reset zegara, bo pierwszy raz bawię się z czasem w SFML i próbowałem różnych rozwiązań. Jeszcze raz wielkie dzięki za pomoc. Problem rozwiązany, proszę o zamknięcie tematu. |
|
« 1 » |