Je me permets de remonter ce très vieux topic car j'ai un peu de mal à mettre en place certains calculs. Je prends un exemple :
Mettons que j'ai des robots fabricant des drones à raison de 2 par seconde. Les drones produisent du minerai à raison de 6 par seconde.
Mettons que à midi j'ai 15 robots, 120 drones et 900 minerai, comment puis-je calculer combien j'aurai de chaque ressource une heure après ?
Selon ce topic, il faudrait que je calcule
Déjà, est-ce que c'est correct pour le calcul du minerai ? Ensuite, est-ce que c'est correct vis à vis du fait qu'on ne compte pas de seconde zéro, on parle de 3600 secondes révolues.
Ensuite, si maintenant j'ai 5 usines qui produisent 3 robots par secondes. Comment je fais ? Est-ce qu'il me suffit de faire un calcul similaire pour les robots et les drones en calculant les robots en premier ?
Est-ce qu'il y a une façon de dériver ça sur n niveaux ?
Enfin, si le minerai peut être un nombre décimal, 0.3 drone ne peut pas réculter de minerai. Du coup, quand je fais mes calculs, je dois
1. Calculer le nombre réel de robots (nombre flottant)
2. Arrondir à l'entier inférieur (fonction floor) pour calculer la production robots -> drones
3. Augmenter mes robots pour le coup suivant en gardant le nombre flottant.
Du coup, comme je stocke des nombres flottants à chaque fois que je calcule, est-ce que ça peut avoir des résultats différents selon la fréquence d'actualisation ?
Par exemple, j'ai 100 usines plus lentes qui produisent 1 robot par heure chacune. Au bout de 51 minutes, soit 0.85 heures, ce mode de calcul va me dire que j'ai construit 85 robots. Si je regarde 8 minutes après, soit à 59 minutes par rapport à mon temps de retard, ces robots auront déja produit des drones, et donc du minerai. Or, il faut bien une heure complète pour produire un robot, donc à 59 minutes, je dois avoir 0 robots, 0 drones et 0 minerai gagnés grâce à ces 100 usines, et à 60 minutes je dois avoir d'un coup 100 robots.
Du coup je suis un peu paumé, ça m'a l'air bien plus compliqué qu'une relation simple type drone/minerai avec des nombres décimaux.
Je suis en train de chercher du code pour ça mais peut être connaissez-vous un moyen simple d'écrire tous ces calculs ?
Mettons que j'ai des robots fabricant des drones à raison de 2 par seconde. Les drones produisent du minerai à raison de 6 par seconde.
Mettons que à midi j'ai 15 robots, 120 drones et 900 minerai, comment puis-je calculer combien j'aurai de chaque ressource une heure après ?
Selon ce topic, il faudrait que je calcule
Code :
robots = 15
drones = 120
minerai = 900
droneParSec = 2
mineraiParSec = 6
H = 3600 // une heure
dronesGagnés = H * droneParSec * robots
mineraiGagné = H * mineraiParSec * (drones + (dronesGagnés * (dronesGagnés + 1) / 2))
drones = drones + dronesGagnés
minerai = minerai + mineraiGagné
Déjà, est-ce que c'est correct pour le calcul du minerai ? Ensuite, est-ce que c'est correct vis à vis du fait qu'on ne compte pas de seconde zéro, on parle de 3600 secondes révolues.
Ensuite, si maintenant j'ai 5 usines qui produisent 3 robots par secondes. Comment je fais ? Est-ce qu'il me suffit de faire un calcul similaire pour les robots et les drones en calculant les robots en premier ?
Est-ce qu'il y a une façon de dériver ça sur n niveaux ?
Code :
usines = 5
robots = 15
drones = 120
minerai = 900
robotsParSec = 3
droneParSec = 2
mineraiParSec = 6
H = 3600 // une heure
robotsGagnés = H * robotsParSec * usines
dronesGagnés = H * droneParSec * (robots + (robotsGagnés * (robotsGagnés + 1) / 2))
mineraiGagné = H * mineraiParSec * (drones + (dronesGagnés * (dronesGagnés + 1) / 2))
robots = robots + robotsGagnés
drones = drones + dronesGagnés
minerai = minerai + mineraiGagné
Enfin, si le minerai peut être un nombre décimal, 0.3 drone ne peut pas réculter de minerai. Du coup, quand je fais mes calculs, je dois
1. Calculer le nombre réel de robots (nombre flottant)
2. Arrondir à l'entier inférieur (fonction floor) pour calculer la production robots -> drones
3. Augmenter mes robots pour le coup suivant en gardant le nombre flottant.
Code :
usines = 5
robots = 15
drones = 120
minerai = 900
robotsParSec = 3
droneParSec = 2
mineraiParSec = 6
H = 3600 // une heure
robotsGagnés = H * robotsParSec * usines
dronesGagnés = H * droneParSec * (floor(robots) + (floor(robotsGagnés) * (floor(robotsGagnés) + 1) / 2))
mineraiGagné = H * mineraiParSec * (floor(drones) + (floor(dronesGagnés) * (floor(dronesGagnés) + 1) / 2))
robots = robots + robotsGagnés
drones = drones + dronesGagnés
minerai = minerai + mineraiGagné
Du coup, comme je stocke des nombres flottants à chaque fois que je calcule, est-ce que ça peut avoir des résultats différents selon la fréquence d'actualisation ?
Par exemple, j'ai 100 usines plus lentes qui produisent 1 robot par heure chacune. Au bout de 51 minutes, soit 0.85 heures, ce mode de calcul va me dire que j'ai construit 85 robots. Si je regarde 8 minutes après, soit à 59 minutes par rapport à mon temps de retard, ces robots auront déja produit des drones, et donc du minerai. Or, il faut bien une heure complète pour produire un robot, donc à 59 minutes, je dois avoir 0 robots, 0 drones et 0 minerai gagnés grâce à ces 100 usines, et à 60 minutes je dois avoir d'un coup 100 robots.
Du coup je suis un peu paumé, ça m'a l'air bien plus compliqué qu'une relation simple type drone/minerai avec des nombres décimaux.
Je suis en train de chercher du code pour ça mais peut être connaissez-vous un moyen simple d'écrire tous ces calculs ?