Кофе
emergency
дневник заведен 08-07-2007
закладки:
цитатник:
дневник:
местожительство:
Москва, Россия
[4] 20-05-2024 10:30
Атас

[Print]
ТотКтоЯеСтЬ
10-12-2014 10:08 решение задачи в прошлом посте
у меня адово трещала башка, поэтому я не стал доводить до какой-то аккуратной единой формулой, а сделал двумя последовательными алгоритмами


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. тока сейчас заметил что трансляция полегла. ну сейчас она выкинет
Комментарии:
10-12-2014 10:31
Камрад
ага, я про это и писал, что через "если - то" придется делать.
тут, кстати, не учтено, что делать, если силы равны
Камрад
ну давай посчитаем если силы равны

PlayerPower = 100
EnemyPower = 100

ZeroStatus = 100
HundredStatus = 100 * 2 - 100 = 100

PlayerStatus = 100 - 100 = 0

PlayerStatusPercent = 100 / 0

Баг. Игра вылетит.
Надо пофиксить
Камрад
ещё помоему перегонка в проценты у меня неверная...таккк
Камрад
верная формула перегонки такая
PlayerStatusPercent = ( 100 * PlayerStatus ) / HundredStatus
Камрад
во. и теперь если силы равны - всё верно считает

PlayerPower = 100
EnemyPower = 100

ZeroStatus = 100
HundredStatus = 100 * 2 - 100 = 100
PlayerStatus = 100 - 100 = 0
PlayerStatusPercent = (100 * 0 ) / 100 = 0
HowMuchPercents = 1 – 0,75 = 0,25
PlayerWinProbability = 0,25 * 0 = 0
PlayerWinProbability = 0 + 0,75 = 0,75

Всё верно, если силы равны, то шанс = 0,75
Закрыть