Как узнать уровень пользователя?

20 апреля, 13:48 Работа 3802 4
Здравствуйте.
Хочу на сайте сделать уровневую систему для пользователей.
Первый уровень начинается со 100 единиц опыта, следующий уровень прибавляется +10% от предыдущего.
1 уровень = 100опыта
2 уровень = 110 опыта
3 уровень = 121 опыта
и т.д.
У меня есть из данных только сумма опыта, например 2500 опыта, как вычесть на PHP какой это будет уровень? Получается, что это сумма первых n членов геометрической последовательности с началом 100 и множителем 1.1.
Не ругайтесь, пока я даже представить не могу как это сделать.
4 комментариев
Сортировка:
Добавить комментарий
Віктор Омелян
Віктор Омелян 2019, 20 апреля, 19:46
0
Почему бы просто не хранить уровень в таблице пользователей? Зачем его каждый раз просчитывать?
Artur Voznesenskij
Artur Voznesenskij 2019, 20 апреля, 18:12
0
Тк уровень можно описать выражением: 100*(1.1 в степени n)= 2500 То чтобы получить n - нам нужна степень корня из 2500/100 чтобы получить 1.1 (целая часть корня) Поэтому: $currentPoint = 2500/100; $levelUp = 1.1; $level = intval(log($currentPoint, $levelUp));
Leonid Levchenko
Leonid Levchenko 2019, 20 апреля, 17:52
0
Сложный вариант: https://gamedev.stackexchange.com/a/110437 Простой: https://gamedev.stackexchange.com/a/110457 Еще более простой: сгенерировать таблицу уровней exp, lvl с конечным количеством уровней и простым sql запросом узнавать текущий уровень без лишних калькуляций.
Seroga Proga
Seroga Proga 2019, 20 апреля, 15:51
0
Если прибавлять по 10%, то для третьего уровня надо не 120, а 121 опыта (110 * 1.1). Сумма членов геометрической прогрессии Sn = b1 * (1 - qn) / (1 - q) b1 = 100 q = 1.1 Sn = 100 * (1 - 1.1n) / (1 - 1.1) = 1000 * (1.1n - 1) 1.1n = (Sn / 1000) + 1 n = log1.1((Sn / 1000) + 1) Sn = 2500 n = log1.1((2500 / 1000) + 1) = log1.1(3.5) = 13.144 Получаем, что 2500 опыта будет на 13 уровне. Но для целых чисел такой вариант не подходит, да и прибавление по 10% даст нецелые значения - 100, 110, 121, 133.1, 146.41, ...

IT Новости

Смотреть все