tu n'as pas besoin d'utiliser des threads pour ça. déplaces tes objets en fonction du temps écoulé depuis le dernier affichage, et ça ira à la même vitesse sur tous les pcs. tu peux faire un timer, ou plus connement utiliser la fonction jesaispluscommentellesappelle() (getsystemtime?) qui renvoie le nombre de millisecondes écoulées depuis le chargement de windows.
Code :
- int lastTime, curTime, deltaTime;
- void moveobjects()
- {
- curTime = GetSystemTime();
- deltaTime = curTime - lastTime; // nb de millisecondes depuis le dernier appel
-
- for (i=0; i<numObjects; i++)
- numObjects[i].pos += numObjects[i].speed * deltaTime / speedRate;
- lastTime = curTime;
- }
|
avec speedRate = la distance parcourue en une ms.
si tu as un pc qui bourre et qui appelle 200 fois la fonction en 200 millisecondes, deltaTime vaudra (en moyenne) 1, donc la distance parcourue sera d1 = 200 * (speed*1/speedRate) = 200*speed/speedRate
sur un pc plus lent qui appelle 10 fois la fonction en 200 ms, deltaTime = 200/10 = 20, distance parcourue d2 = 20 * (speed*10/speedRate) = 200*speed/speedRate
et d1=d2.
en pratique il vaut mieux utiliser un timer (même un timer multimédia, mais je ne me rappelle plus la différence), en tout cas essaye déjà avec ça.