Godwarlock
22.05.2015 - 18:00
public static function calculateDamage($min_attack = 10, $max_attack = 15, $defence = 0,06){
$damage = mt_rand($min_attack, $max_attack);
$defence = $defence<=0 ? 1 : $defence;
$defence_percent = (10*log($defence));
$pure_damage = abs($damage-($damage/100*$defence_percent));
return $pure_damage;
}
Есть такой вот код. Результат должен получится исходя из значения $defence.
$defence = от 0,01 до 1. 1 равна 100%
Но вот незадача, результат выдается тот же самый, что если бы и не использовалась переменная $defence. А надо чтобы значение переменной влияло на результат. Подскажите в чем ошибка?
Чему равно значение логарифма в диапазоне от 0 до 1. Поэтому и defence не влияет на результат. А еще мне нравится rand(minatack, maxatack). Т.е случайное кол-во атак, а это интересно.
_____________
Трус не играет в хокей
Godwarlock
22.05.2015 - 18:13
stump
Дело в том, что данный кусок кода писал не я. Теоретическая логика расчета моя, реализация нет) Поэтому я не совсем понимаю в чем собственно ошибка.
Цитата |
А еще мне нравится rand(minatack, maxatack). Т.е случайное кол-во атак, а это интересно. |
Не случайное количество атак, а случайный урон, в зависимости от минимального и максимального значения урона.
"$defence = 0,06" - тут 2 переменные, или это 0.06 ?
Godwarlock
22.05.2015 - 19:18
Kusss
0,06. Но не в этом суть в принципе. . Дело в том, что чувак который мне помогал со скриптингом, видать делал опору на то, что $defence будет расчитываться от 1-100, а мне надо от 0-1, в том числе и десятичные 0,05, 0,6 и тд
Попробуй вот так:
$defence = 0.06
_____________
Трус не играет в хокей
Godwarlock
22.05.2015 - 20:36
stump
Причем здесь это? Дело совершенно не в синтаксисе. Расчет сам по себе не очень правильный. Если к примеру, $defence получает значение 50, то рассчитывается половина демага. Но мне нужно, чтобы половина $damage была при получении значения 0.5
0,06 это img 0 потому что в РНР используется . ! А по поводу правильности алгоритма звони тому кто правовом и рассказывай про свои замечания. Все что увидел это , и минимальная разница в логорифме в интервале от 0 до 1.
_____________
Трус не играет в хокей
Игорь_Vasinsky
22.05.2015 - 22:31
при том
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sergeiss
23.05.2015 - 00:07
Цитата (Godwarlock @ 22.05.2015 - 20:36) |
Причем здесь это |
При том, что если там запятая, то $defence у тебя всегда равен нулю, а "06" не имеет никакого отношения к нему. Потому что запятая используется для совершенно других целей, нежели точка.
Поэтому не спорь
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
А просто замени эту запятую на точку и посмотри, что получится.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
killer8080
23.05.2015 - 10:52
Цитата (Godwarlock @ 22.05.2015 - 19:36) |
stump Причем здесь это? |
приведенный кусок кода в принципе работать не будет, PHP обругается ещё на этапе парсинга.
Цитата (Godwarlock @ 22.05.2015 - 19:36) |
Если к примеру, $defence получает значение 50, то рассчитывается половина демага. Но мне нужно, чтобы половина $damage была при получении значения 0.5 |
У тебя был рабочий код, и ты решил его улучшить? Зачем? Чем задание целочисленных процентов тебя не устраивает? Если уж так приспичило, ну умножь предварительно свой коэффициент на 100, и получишь проценты, в чем проблема?
Godwarlock
24.05.2015 - 18:56
Спасибо всем за помощь) разобрался
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.