RedBishep сказал(а):
Насчёт времени обучения,хорошая мысль сделаю на дняк и обновлю тута.
А вот насчёт "Количество единовременно обучаемых войск" над этим надо подумать как это реализовать=)
Я немного порасписывал формулы, можно реализовать как-то так:
(код на сугубо виртуальном языке)
W - время обучения 1 воина ( в секундах)
NW - необходимое количество войск
CW - максимально возможное количеств обучаемых войск за раз у игрока
TW - количество войск которые нужно выставить в обучение игроку, чтобы уложиться в длительность буста
T - время обучения необходимого количества ( в секундах)
NN - количество итераций за которое мы сможем обучить NW
N - количество войск которое мы сможем обучить с одним бустом за раз
NN = NW mod CW // mod деление без остатка//
if (NW % CW) != 0
do
NN +1
// смотрим сколько итераций нам потребуется для обучения необходимого количества войск, % - делит число и выдает только остаток, != - означает не равно, если у нас есть остаток, тогда считает что нам необходимо на одну итерацию больше NN +1//// просчитываем необходимое время для обучения войск //
T = W*CW
do while (NW=0)
// здесь сравниваем затрачиваемое время на целесообразность использования буста, бусты естественно все высчитаны тоже в секундах, например 15 дневный = 3 240 000 секунд //
if T>=3240000
do...
...
//сравнивавает все варианты и дальше напишу на примере: W = 15сек (время обуч. 1 воина), NW = 100 (нам нужно 100 воинов), в таком случае T у нас равно 1500 секунд (25мин) //
...
if T>=900 // 15минутный буст = 900 сек//
do
N = 900 mod W // mod деление без остатка//
TW = CW - (900 mod W) // через 900 mod W смотрим сколько войск мы обучим за буст и вычитаем из общего числа, чтобы понять сколько войск нужно выставлять в обучение за 1 один раз, чтобы уместиться в буст. Пример у нас 100 войск, где каждый учиться 15сек, получается в целом 25мин, через ИФ'ы находим оптимальный буст в 15мин (900 сек), смотрим сколько мы обучим за раз 900 mod 15 = 60 воинов нам нужно обучить за раз чтобы уложиться в 15мин буст, TW = 60 воинов //
NN = (CW / N) * NN //считаем количество итераций необходимых для обучения всех необходимых войск с бустом//
if (CW % N) != 0
do
NN +1
// % - делит число и выдает только остаток, != - означает не равно, если у нас есть остаток, тогда считает что нам необходимо на одну итерацию больше NW +1//
и в зависимости от подходящего для Т - if'а, мы выводим на экран, какой буст нам надо использовать + TW сколько воинов в обучение нужно ставить + NN сколько раз нам придется повторять все эти действия
П.С. Можно еще добавить подсчет времени на обучение одного война с учетом того или иного буста, чтобы не приходилось их использовать в игре для расчета финальной цифры.
Нужно тестировать, во время компиляции кода может всплыть куча подводных камней, но в целом логика какая-то такая