Я моделирую повторные нажатия кнопки для постепенной игры. Там будут кнопки в игре, установленные для повторного нажима. Эти кнопки имеют:
- variable press/sec скорости или скорости. /> Переменная нажимает/нажимает множители , которые усиливают каждое нажатие (не то же самое, что напрямую умножение значения нажатия/секунья)
Некоторые данные IMM:
Чтобы сохранить прессы независимы от размера окна расчета клещей, presses «выровнены» на следующую метку времени, дисквизируемое на (1000/настойчивости. /> Например, 4 нажатия /с. ... 9750, 10000, 10250, 10500, ...Я храню повторяющиеся прессы как нажимайте объекты (
Код: Выделить всё
pressObjПроблема:
Я уменьшил это до: Найдите наименьший временный ламп x, где f (x) = сумма функций потолка> Пороговые значения
Каждая группа, определяемая с помощью Piefise> Code, Code> Code>. Когда несколько нажатых объектов перекрываются, мне нужно найти, когда их сумма сначала превышает ограничение скорости.
Пример:
Кнопка обновляется с 10 нажатий/с 14 нажатия/сек. Кнопка имеет нажатие/нажатие множителя = 2 и ограничение скорости = 25 нажатия/сек.
Нажмите объекты (
Код: Выделить всё
pressObj(в этом примере, потому что мы видим, что ограничение нарушено на девятом объекте прессы, последние три пресс -объекта не будут созданы во время прогона программы, если не было совместного времени. /> Каждый объект прессы эффективно создает кусочную функцию < /strong>, основанную на четырех точках останова, где его влияние на текущие прессы /секунду Tally, < /li>
Прессы прекратились, и последние прессы начинают истекать - уменьшение бега, < /li>
Последний пресс истек - Tally вернулся к 0. < /li>
< /ol>
Pseudocode для конструирования функции кусочки из повторного нажатия.
Код: Выделить всё
tsStartPressing = pressObj.startPressingTimestamp
tsStopPressing = pressObj.stopPressingTimestamp
ppMs = pressObj.pressesPerSecond / 1000
mspp = 1 / ppMs
pressMul = pressObj.pressMul
// The four breakpoints
tsStart
tsPlateau = min( tsStop, tsStart + 1000 )
tsStartDecrease = max( tsStop, tsStart + 1000 )
tsEnd = tsStop + 1000
// The first performed press is aligned to the next timestamp divisible by milliseconds/press
tsAlignedFirstPress = ceil(tsStartPressing / mspp) * mspp
plateauTally = ceil((tsPlateau - tsAlignedFirstPress) * ppMs) * pressMul
// Breakpoints 1-2: Increment -- presses 'ramp up'
F_inc(t) = ceil((t - tsAlignedFirstPress) * ppMs) * pressMul
// Breakpoints 2-3: Plateau -- presses stop, or expire at the same rate they are pressed
F_plateau(t) = plateauTally
// Breakpoints 3-4: Decrement -- presses 'ramp down' as no more occur and they expire
F_dec(t) = plateauTally - ceil((t - (tsStartDecrease - tsStartPressing) - tsAlignedFirstPress) * ppMs) * pressMul
// Piecewise:
F(t) = {
F_inc(t) | tsStart
Подробнее здесь: [url]https://stackoverflow.com/questions/79719198/finding-the-first-timestamp-where-sum-of-ceiling-functions-exceeds-a-threshold[/url]
Мобильная версия