Хочу сделать игровой проект, где будет своя внутренняя валюта. Хочу сделать, чтобы при проигрыше внутренней валюты, она автоматически начала пополняться и останавливаться на фиксированном ограничении.
Допустим, у игрока 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
Комментариев нет:
Отправить комментарий