у меня адово трещала башка, поэтому я не стал доводить до какой-то аккуратной единой формулой, а сделал двумя последовательными алгоритмами
If (PlayerPower< EnemyPower) //игрок слабее
{
ZeroStatus = PlayerPower/ PlayerWeaknessCoefficient
HundredStatus = EnemyPower – ZeroStatus //считаем от ноля
PlayerStatus = PlayerPower – ZeroStatus //насколько крут игрок от ноля. Если игрок лох – будет отрицательное число
//перегоняем в проценты
PlayerStatusPercent = ( 100 * PlayerStatus ) / HundredStatus //если игрок лох – вышло больше единицы
//перегоняем в вероятность
PlayerWinProbability = DifficultyCoefficient * PlayerStatusPercent //если игрок лох – вышло больше чем DifficultyCoefficient
If PlayerWinProbability > DifficultyCoefficient then PlayerWinProbability = 0 //на тебе, сука
}
Else // игрок сильнее
{
ZeroStatus = EnemyPower
HundredStatus = (EnemyPower * PlayerSuperiorityCoefficient) - ZeroStatus //считаем от ноля
PlayerStatus = PlayerPower – ZeroStatus //насколько крут игрок от ноля. Если игрок бог – будет больше HundredStatus
//перегоняем в проценты
PlayerStatusPercent = ( 100 * PlayerStatus ) / HundredStatus //если игрок бог – вышло больше единицы
//по скольким процентам размазываем
HowMuchPercents = 1 – DifficultyCoefficient
//сколько из этих процентов получает игрок
PlayerWinProbability = HowMuchPercents * PlayerStatusPercent // если игрок бог – вышло больше HowMuchPercents
//складываем с минимумом
PlayerWinProbability = PlayerWinProbability + DifficultyCoefficient //если игрок бог – вышло больше единицы
If PlayerWinProbability > 1 then PlayerWinProbability = 1 //не выёбываться тут
}
p.s. тока сейчас заметил что трансляция полегла. ну сейчас она выкинет
Ключевой вопрос дилеммы ваг...
[Print]
the_Dark_One