Hej, na jakiej zasadzie działa taki program:
sf::Clock Clock;
float moveSpeed = 10000.0f;
while (Window.isOpen())
{
Clock.restart();
sf::Event Event;
while (Window.pollEvent(Event))
{
switch (Event.type)
{
case sf::Event::Closed:
Window.close();
break;
}
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
rect.move(moveSpeed * Clock.getElapsedTime().asSeconds(), 0);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
rect.move(-moveSpeed * Clock.getElapsedTime().asSeconds(), 0);
rect - jest to obiekt klasy sf::Rectangleshape
Bardzo proszę o wytłumaczenie, dlaczego używamy zegara? Podobno dlatego, żeby na każdym komputerze nasz obiekt poruszał się z jednakową prędkością? Nie wiem czy to o to chodzi? Ale na jakiej zasadzie to działa? I czy getElapsedTime() zwróci nam zawsze tą samą wartość? Chyba to niemożliwe. Jednym słowem, dlaczego zamiast ustawić na sztywno moveSpeed, to mnożymy go razy Clock.getElapsedTime()?
PS Uczę się z angielskiego kursu i dlatego nie zawsze wszystko rozumiem, chociaż autor wszystko tłumaczy.