OK. Je reprend, avec la description de chaque ligne, si ca peut être plus clair...
Encore une fois, mon objectif est d'avoir une unité de mesure du temps précise de 50 millisecondes, pour avoir une gestion fluide du jeu en fonction du temps réel, et non celui de l'ordinateur, qui peut varier.
sf::Time t1;//je crée un temps t1.
sf::Clock temps;//Je met un chrono "temps"avant la boucle, comme dans le tuto
while (!controles.quitter()&&m_niveauOuvert == 1){//je lance ma boucle avec les conditions du niveau
m_tip = 0; //Je reset m_tip a chaque début de boucle afin qu'il soit toujours à zéro sauf lorsque le temps
// écoulé est de 50millisecondes
t1 = tempsTest.getElapsedTime();//je prend le temps t1 au début de la boucle
if(t1.asMilliseconds()>50)//si le temps t1 dépasse 50 millisecondes, m_tip = 1. (il sert ici d'unité pour le
//temps du niveau
{
m_tip = 1;
tempsTest.restart(); //je restart le temps pour qu'il reparte à zéro.
}
sf::Vector2i vecteurSouris = sf::Mouse::getPosition(); //la je prend la position de la souris à chaque instant
//pour le déplacement du joueur
if (m_tip == 1)//toutes les 50 millisecondes...
{
elementFeu.recoiDeplacement(vecteurSouris.x ,vecteurSouris.y); //mon objet recoi les déplacements
m_compteurTemps++; //incrémente toutes les 50 milliseconde, pour gérer le temps global du niveau, qui
//est limité.
}
m_afficheur->chargerPosition(elementFeu); //ici, j'envoi les positions à chaque frame, de l'objet
m_afficheur->afficherNiveau(); //a chaque frame, je demande au niveau de s'afficher.
m_afficheur->recoiVue(m_reperX,m_reperY,0); //et d'envoyer la position de la vue.(qui bouge également)
if (m_compteurTemps>100)//au bout de 100x50 millisecondes, le niveau se ferme
{
m_compteurTemps = 0; //Je reset le compteur du niveau au cas où
m_niveauOuvert = 0; //Je ferme le niveau
m_afficheur->libererNiveau(1); //Je demande la libération des surfaces
m_niveauSuivant = 0; //Pour l'instant, je revient au menu en mettant zéro.
}
}
Merci