Простите мое невежество, но я столкнулся с проблемой, которая оказалась сложной для моих нынешних знаний в области программирования с Processing, хотя идея довольно проста. Видите ли, мне нужно добавлять 1 единицу к переменной каждые 10 секунд. Это код:
int i = 0;
void setup()
{
frameRate(60);
}
void draw()
{
int time = (millis() % 10000) / 1000;
if (time == 9)
{
i++;
} else {}
System.out.println("-------------------------------\n" +
"Timer: " + time + "\n"
+ "Adding 1 every 10 seconds: : " + i + "\n"
+ "-------------------------------");
}
Проблема в том, что, поскольку draw()
зацикливается 60 раз в секунду, как только time
достигает 9, последняя секунда заставляет оператор if
выполняться 60 раз, и он заканчивает добавлением 60 к i
каждые 10 секунд, и мне просто нужно добавить 1.
Я попытался применить какой-то алгоритм, который вычитает ненужные числа по мере их увеличения:
int i = 1;
int toSubstract = 0; //Variable for algorithm
void setup()
{
frameRate(60);
}
void draw()
{
int time = (millis() % 10000) / 1000;
if (time == 9)
{
i++;
algToSubstract();
} else {}
System.out.println("-------------------------------\n" +
"Timer: " + time + "\n"
+ "Adding 1 every 10 seconds: : " + i + "\n"
+ "-------------------------------");
}
void algToSubstract() //<--- This is the algorithm
{
i = i - toSubstract;
toSubstract++;
if (toSubstract > 59)
{
toSubstract = 0;
} else {}
}
... но я не мог заставить его работать. Идея была примерно такой:
time
достигает 9, выполняется оператор if
, i
= 1 и toSubstract
= 0.
i
увеличивает 1, поэтому i
= 2.
i = i - toSusbract
(i
= 2 - 0 so i
= 2).
toSusbract
увеличивает 1, поэтому toSusbract
= 1.
i
увеличивает 1, поэтому i
= 3.
i = i - toSusbract
(i
= 3 - 1 so i
= 2).
toSusbract
увеличивает 1, поэтому toSusbract
= 2.
...Процесс продолжается...
toSubstract
становится больше 59, поэтому он перезапускается до 0.
time
перестает быть 9.