Forum de la communauté SFML

Aide => Système => Discussion démarrée par: Cmdu76 le Octobre 08, 2014, 06:18:42 pm

Titre: Problème avec sf::Time
Posté par: Cmdu76 le Octobre 08, 2014, 06:18:42 pm
Bonjour,

Je suis sur un projet et j'ai une erreur très très bizarre...

J'utilise une classe Application, fortement inspirée du livre sur SFML. Cette classe a une méthode écrite ainsi :

void Application::run()
{
    sf::Clock clock;
        sf::Time timeSinceLastUpdate = sf::Time::Zero;
        const sf::Time TimePerFrame = sf::seconds(1/60);
        while (mContext.window->isOpen())
        {
                timeSinceLastUpdate += clock.restart();
                while (timeSinceLastUpdate > TimePerFrame)
                {
                        timeSinceLastUpdate -= TimePerFrame;

                        handleEvents();
                        update(TimePerFrame);

                        std::cout << TimePerFrame.asSeconds() << " " << TimePerFrame.asMilliseconds() << " " << TimePerFrame.asMicroseconds() << std::endl;

                        if (mStates.isEmpty())
                                mContext.window->close();
                }
                render();
        }
}

Comme vous le voyez, j'ai une variable TimePerFrame qui est une constante et qui est égale à sf::seconds(1/60).
Normalement, la valeur ne peut pas changer. Donc la ligne avec les std::cout devrais m'afficher :

1/60 100/6 100000/6

Mais la ligne que j'obtiens affiche que des zéros...

Pourquoi ???

Je suis sur Ubuntu 14.04

Edit : Je viens de recompiler SFML, rien n'y fait...
Titre: Re : Problème avec sf::Time
Posté par: TheKingArthur le Octobre 08, 2014, 07:10:39 pm
Tu obtient des 0 ou des 0 ET des 1 ? Car tu dis que sa devrait donner "1/60" mais le "/60" n'est écrit nul part.
Titre: Re : Problème avec sf::Time
Posté par: Cmdu76 le Octobre 08, 2014, 07:14:03 pm
J'obtiens : 0 0 0

(Dans la ligne que je montre c'est un exemple parce que le compilo ne montrerai pas de barre de fraction mais un arrondi)
Titre: Re : Problème avec sf::Time
Posté par: TheKingArthur le Octobre 08, 2014, 07:15:37 pm
Ok. Je ne vois pas de problème. Tu est sur que ton programme fonctionne bien ?
Titre: Re : Problème avec sf::Time
Posté par: Cmdu76 le Octobre 08, 2014, 07:19:46 pm
C'est-à-dire ?


Edit : Je viens de résoudre contourner mon problème.

sf::Clock clock;
    while (mContext.window->isOpen())
    {
        handleEvents();
        update(clock.restart());
        render();
    }

Mais si quelqu'un trouve une raison de mon ancien problème ce serait super !!
Titre: Re : Problème avec sf::Time
Posté par: kimci86 le Octobre 08, 2014, 08:43:28 pm
Une division entre des entiers donne un entier.
Titre: Re : Problème avec sf::Time
Posté par: Cmdu76 le Octobre 08, 2014, 08:58:42 pm
Merci beaucoup et je me dégoûte moi-même de ne pas avoir vu ça ...
Titre: Re : Problème avec sf::Time
Posté par: TheKingArthur le Octobre 09, 2014, 09:00:58 pm
A bah biensur ! Que suis-je bête de n'avoir pas remarquer ça !! Merci en tout cas.