Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Mierzenie i wyświetlenie czasu gry na ekranie

Ostatnio zmodyfikowano 2015-07-26 22:55
Autor Wiadomość
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:

C/C++
sf::Clock zegar;
sf::Time czas = zegar.getElapsedTime();
int i = czas.asSeconds();

Potem zapisuję tą zmienną do stringa:

C/C++
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:

C/C++
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.
P-135272
pekfos
» 2015-07-26 21:51:29
C/C++
if( i >= 1 )
{
    okno.draw( pokaz_czas );
    zegar.restart();
}
Wywal draw() przed if.
P-135275
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?!
P-135276
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?).
P-135277
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.
P-135279
« 1 »
  Strona 1 z 1