Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Problème avec sf::Time  (Lu 1898 fois)

0 Membres et 1 Invité sur ce sujet

Xyliaris

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
[Résolu] Problème avec sf::Time
« le: Janvier 23, 2017, 06:37:58 pm »
Bonjour à tous ^^, je code un petit shoot'em up et j'ai un problème pour la génération de nouveaux astéroïdes.
Mon code n'en génère tout simplement pas :/

Voici le code où est gérer cette partie ( plus tard il ne seras plus dans cette méthode car ce n'est pas ce qu'est censé faire la méthode actuel, mais je test ici pour le moment )

void CometSystem::update()
{
    for( size_t i{0}; i < cs_comets.size(); i++ )
        cs_comets[i].updatePosition();

    if( cs_comets.size() < cs_par_cometLimit )
    {
        if(cs_gen_next_set)
            if( cs_clk.getElapsedTime() > cs_gen_spawn_next )
            {
                add(1);
                cs_gen_spawn_next = tl::randomTime(cs_gen_spawn_min, cs_gen_spawn_max);
                cs_clk.restart();
            }
        else
        {
            cs_gen_spawn_next = tl::randomTime(cs_gen_spawn_min, cs_gen_spawn_max);
            cs_gen_next_set = true;
        }
    }
}
 

La méthode update est appelé toute les millisecondes

cs_comets                 : vecteur où sont stocké les comets(astéroïdes) : type std::vector<Comet>
cs_par_Limit              : limite de comets dans le jeu : type unsigned short
cs_gen_spawn_min   : temps minimum avant l'apparition d'une nouvelle comet : type mutable sf::Time
cs_gen_spawn_max  : temps maximum avant l'apparition d'une nouvelle comet : type mutable sf::Time
cs_gen_spawn_next  : temps avant l'apparition d'une nouvelle comet : type sf::Time
cs_gen_next_set       : booléen qui défini si un temps avant la prochaine apparition d'une comets à été définit ( false dès la construction de l'objet puis toujours true car reset automatique de cs_gen_spawn_next )

randomTime permet, comme sont nom l'indique, de récupérer un temps aléatoire entre une certaine intervalle
add(1) permet d'ajouter une comet

Code de tl::randomTime
sf::Time tl::randomTime( sf::Time const &min, sf::Time const &max )
{
    std::uniform_int_distribution<> dist(min.asMilliseconds(), max.asMilliseconds());
    sf::Time time(sf::milliseconds(dist(rEngin)));
    return time;
}
 

Initialisation des variables

cs.setLimit(20);
...
cs.setSpawnTime(sf::seconds(5), sf::seconds(10)); // cs = CometSystem
.../...
void CometSystem::setSpawnTime( sf::Time const &min, sf::Time const &max )
{
    cs_gen_spawn_max = max;
    cs_gen_spawn_min = min;
}

 

Je pense que je ne sais pas du tout utiliser sf::Time, j'ai beau regarder la doc, un truc doit m'échapper :/
Une idée de ce qui ne vas pas ?

Je vous remercie :)

Edit :
Ou alors le problème vient de la clock mais je crois qu'elle a un thread dédié non ?
« Modifié: Janvier 23, 2017, 09:38:00 pm par Xyliaris »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec sf::Time
« Réponse #1 le: Janvier 23, 2017, 08:20:32 pm »
Fais du debugging pas à pas, inspecte les valeurs des variables, regarde ce qui se passe et essaye de comprendre ce que tu as codé. Ce sera plus efficace que nous essayant de comprendre ton code en le scrutant. Les environnements de développement ont des outils pour aider à résoudre les problèmes, pourquoi ne pas les utiliser ? ;)
Laurent Gomila - SFML developer

Xyliaris

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème avec sf::Time
« Réponse #2 le: Janvier 23, 2017, 09:23:01 pm »
J'ai lancer mon programme en mode debug et aucune erreurs, je n'ai pas encore plus approfondi le debugging mais je voulais juste savoir si j'utilisais bien sf::Time mais apparemment le problème ne vient pas de là ?
Je vais voir ça et je re-viendrai vers vous si jamais je n'ai toujours pas trouvé de solution ;)
Merci pour ta réponse :)
« Modifié: Janvier 23, 2017, 09:24:59 pm par Xyliaris »

Xyliaris

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème avec sf::Time
« Réponse #3 le: Janvier 23, 2017, 09:32:05 pm »
En faite je n'ai aucune erreur, j'ai juste mit un zéro en trop au temps d'attente minimum x)
Merci quand même ^^"