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

[SFML 2.0] Klasa Clock

Ostatnio zmodyfikowano 2014-02-07 22:33
Autor Wiadomość
PCS
Temat założony przez niniejszego użytkownika
[SFML 2.0] Klasa Clock
» 2014-02-07 20:54:18
Witam, tak jak w temacie. Nie mogę się wczytać w tę dokumentację. Mianowicie, jakie jest zastosowanie tej klasy w grach, widzę np. linie kodu:
C/C++
while( !cSnake.exit )
{
    sf::Time czas = clTime.getElapsedTime();
    sf::Event event;
    while( window.pollEvent( event ) )
    {
        if( event.type == sf::Event::KeyReleased )
        {
            switch( event.key.code )
            {
            case sf::Keyboard::Left:
                cSnake.sterowanie( - 1 );
                break;
            case sf::Keyboard::Right:.
                cSnake.sterowanie( 1 );
                break;
            case sf::Keyboard::Escape: // 
                cSnake.exit = true;
                break;
            case sf::Keyboard::Up:
                cSnake.speedUp();
                break;
            case sf::Keyboard::Down:
                cSnake.speedDown();
                break;
            }
        }
    }
   
    if( czas > sf::seconds( cSnake.predkosc ) )
    {
        cSnake.move();
        clTime.restart();
    }
    window.clear();
   
    cSnake.draw( window );
   
    window.display();
}
}
[ / cpp ]
Nie wiem jakie ma zastosowanie akurat tutaj. Jakby ktoś mógłby to wyjaśnić o co biega, jak i za co odpowiedzialne są pogrubione linie kodu byłbym wdzięczny.
sf::Time czas = clTime.getElapsedTime();[ / b ]
if (czas > sf::seconds(cSnake.predkosc))
clTime.restart();
P-104196
MrPoxipol
» 2014-02-07 20:59:42
Jeśli minie odpowiedni czas, resetuj zegarek i licz od nowa i tak na okrągło.

sf::Time sf::Clock::getElapsedTime() - zwraca czas jaki upłynął od zresetowania zegarka.
sf::Time sf::Clock::restart() - restartuje zegarek i zwraca to samo co metoda wyżej.
Żeby zobaczyć co znaczy sf::seconds(1) odwiedź dokumentacje i klasę sf::Time.
P-104197
PCS
Temat założony przez niniejszego użytkownika
» 2014-02-07 21:07:29
Yhm, a jaki jest ten "odpowiedni czas" i co ona liczy, i na co resetuje na okrągło. Może inaczej, jakie mają powiązanie te trzy linie kodu z pętlą While(o ile ma) i o co chodzi z tym warunkiem w if.
P-104198
MrPoxipol
» 2014-02-07 21:18:26
sf::Time czas = clTime.getElapsedTime();
 - czas od ostatniego resetowania
C/C++
if( czas > sf::seconds( cSnake.predkosc ) )
{
    cSnake.move();
    clTime.restart();
}
Jeśli upłynął czas, którym jest tu prędkość węża, to wtedy poruszamy wężem i resetujemy zegar.
P-104199
PCS
Temat założony przez niniejszego użytkownika
» 2014-02-07 22:33:19
Dzięki wielkie za wyjaśnienie, teraz to kminie.
P-104208
« 1 »
  Strona 1 z 1