Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Нужно сделать автоматическое увеличение числа

Хочу сделать игровой проект, где будет своя внутренняя валюта. Хочу сделать, чтобы при проигрыше внутренней валюты, она автоматически начала пополняться и останавливаться на фиксированном ограничении.
Допустим, у игрока 50 фишек, он их проиграл, стало 0 - в этот момент они должны начать пополняться и останавливаться, допустим, на 50. Можно по 10 каждые 10 минут, можно по 1 каждую минуту, непринципиально,если кто понял о чем речь, подкиньте, пожалуйста, код. Можно формальный, хотя бы чтобы разобраться. Заранее спасибо)


Ответ

Нужно как-то отметить время, когда всё потрачено до нуля и включить игроку временный режим «накопление денег за время».
Далее количество валюты становится функцией времени:
start = XXX; // время когда упало до 0 mode = "earning"; // игрок находится в режиме накопления за время now = (new Date).getTime(); // время сейчас money = Math.floor((now - start) / N) * K; if( money > 50) { mode = "game"; // больше нет режима накопления money = 50; }
Продумайте момент, когда во время накопления за деньги, игрок как-то ещё умудрился заработать несколько монет – что делать тогда?

Поясню строку money = Math.floor((now - start) / N) * K;. Это школа, линейная алгебра – нам нужна функция, растущая от 0 в точке start. В простом варианте это y = k * (x - start), где k некий коэф. скорости роста. Но так будут дробные значения, а вы пишете в вопросе про дискретные – «по 10 каждые 10 минут, можно по 1 каждую минуту».
Т.е. график роста не наклонная линия, а ступеньки по целым значениям. Поэтому добавлено округление:

Как подобрать коэффициенты N и K. Не углубляясь в объяснение, вот рецепт. Если надо чтобы раз в минуту (60 секунд) на 1, делим на N=60 и можно не умножать. Если раз в 10 минут (600 секунд) на 10, делим на N=600, и умножаем на K=10

Комментариев нет:

Отправить комментарий