[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Расчетная система
Godwarlock
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. А надо чтобы значение переменной влияло на результат. Подскажите в чем ошибка?
stump
Чему равно значение логарифма в диапазоне от 0 до 1. Поэтому и defence не влияет на результат. А еще мне нравится rand(minatack, maxatack). Т.е случайное кол-во атак, а это интересно.

_____________
Трус не играет в хокей
Godwarlock
stump
Дело в том, что данный кусок кода писал не я. Теоретическая логика расчета моя, реализация нет) Поэтому я не совсем понимаю в чем собственно ошибка.
Цитата
А еще мне нравится rand(minatack, maxatack). Т.е случайное кол-во атак, а это интересно.

Не случайное количество атак, а случайный урон, в зависимости от минимального и максимального значения урона.
Kusss
"$defence = 0,06" - тут 2 переменные, или это 0.06 ?
Godwarlock
Kusss
0,06. Но не в этом суть в принципе. . Дело в том, что чувак который мне помогал со скриптингом, видать делал опору на то, что $defence будет расчитываться от 1-100, а мне надо от 0-1, в том числе и десятичные 0,05, 0,6 и тд
stump
Попробуй вот так:
$defence = 0.06


_____________
Трус не играет в хокей
Godwarlock
stump
Причем здесь это? Дело совершенно не в синтаксисе. Расчет сам по себе не очень правильный. Если к примеру, $defence получает значение 50, то рассчитывается половина демага. Но мне нужно, чтобы половина $damage была при получении значения 0.5
stump
0,06 это img 0 потому что в РНР используется . ! А по поводу правильности алгоритма звони тому кто правовом и рассказывай про свои замечания. Все что увидел это , и минимальная разница в логорифме в интервале от 0 до 1.

_____________
Трус не играет в хокей
Игорь_Vasinsky
Цитата
Причем здесь это?

при том wink.gif

_____________
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
Цитата (Godwarlock @ 22.05.2015 - 20:36)
Причем здесь это

При том, что если там запятая, то $defence у тебя всегда равен нулю, а "06" не имеет никакого отношения к нему. Потому что запятая используется для совершенно других целей, нежели точка.

Поэтому не спорь smile.gif А просто замени эту запятую на точку и посмотри, что получится.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
Цитата (Godwarlock @ 22.05.2015 - 19:36)
stump
Причем здесь это?

приведенный кусок кода в принципе работать не будет, PHP обругается ещё на этапе парсинга.
Цитата (Godwarlock @ 22.05.2015 - 19:36)
Если к примеру, $defence получает значение 50, то рассчитывается половина демага. Но мне нужно, чтобы половина $damage была при получении значения 0.5

У тебя был рабочий код, и ты решил его улучшить? Зачем? Чем задание целочисленных процентов тебя не устраивает? Если уж так приспичило, ну умножь предварительно свой коэффициент на 100, и получишь проценты, в чем проблема?
Godwarlock
Спасибо всем за помощь) разобрался
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.