Юнит идет расстояние А со скорость Б, если построить армейскую академию, то он будет идти до 300% быстрее (каждый уровень дает + 10% к скорости, всего 20 уровней) В - ускорение, однако первые 30 полей он идет обычным шагом, а потом ускоряется... как это написать??? сейча это выглядит так... но тут без учета, что первые 30 идет шагом обычным.. как иправить? (
Ну в математике нельзя обозначить такие блоки, как if. Можно расписать, что ответ входит в множество, например В ⊂ {30; +∞} Но тут надо всё равно строить логику.
Не проверял досканально формулу, но на вскидку вроде расписал правильно: PHP: <?php $speed = 10; $distance = 600; $academy_bonus = 0.1; $academy_level = 20; $no_speedup = 30; $time = ($no_speedup / $speed) + (($distance - $no_speedup) / ($speed + ($speed * ($academy_bonus * $academy_level)))); ($no_speedup / $speed) - время, за которое прошли отрезок без ускорения. второй кусок считает за сколько мы пройдём оставшиеся поля с ускорением, если оно есть, формула та - же: оставшаяся дистанция делённая на скорость. ($speed + ($speed * ($academy_bonus * $academy_level))) Берём скорость и плюсуем с бонусом скорости. Бонус считается по принципу базовая скорость умножить на процент прироста. Т.е. если взять скорость 10, бонус 10% (0.1) и текущий уровень 10, по получим (10 + (10 * (0.1*10))), т.е. (10 + (10 * 1)) => 20. Для обрабоки результатов с растоянием меньше 30 думаю хватит поставить if ($distance < $speedup) { $time = $distance / $speed; }, но если очень надо единой формулой - потом можем попробовать посчитать.
странно, но у меня получается скорость 6, расстояние 32,02, бонус 0, пройдет за 5 дней, 8 часов и три минуты...
нет, я делаю программу для анализа ) http://depositfiles.com/folders/IO4W6PVI6 Зацени, бери последню версию ) скоро 4.5 выйдет
Nemo А за сколько должен пройти? И вообще надо единицы измерения тоже говорить. Теоретически вроде правильно, может у тебя не стыковка единиц измерения, так что полные условия в студию тогда