Excuse my ignorance, but I ran into a problem that turned out to be challenging for my current knowledge in programming with Processing, even though the idea is quite simple. You see, I need to add 1 unit to a variable every 10 seconds. This is the code:
int i = 0;
void setup()
{
frameRate(60);
}
void draw()
{
int time = (millis() % 10000) / 1000;
if (time == 9)
{
i++;
} else {}
System.out.println("-------------------------------
" +
"Timer: " + time + "
"
+ "Adding 1 every 10 seconds: : " + i + "
"
+ "-------------------------------");
}
The problem is that because draw()
loops 60 times per second, as soon as time
reaches 9 the second it last makes the if
statement to be executed 60 times and it ends adding 60 to i
every 10 seconds and I just need to be adding 1.
I tried to apply some kind of algorithm that subtracts the unnecessary numbers as they increase like so:
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("-------------------------------
" +
"Timer: " + time + "
"
+ "Adding 1 every 10 seconds: : " + i + "
"
+ "-------------------------------");
}
void algToSubstract() //<--- This is the algorithm
{
i = i - toSubstract;
toSubstract++;
if (toSubstract > 59)
{
toSubstract = 0;
} else {}
}
...but I couldn't make it work. The idea was something like this:
time
reaches 9, if
statement executes, i
= 1 and toSubstract
= 0.
i
increases 1 so i
= 2.
i = i - toSusbract
(i
= 2 - 0 so i
= 2).
toSusbract
increases 1 so toSusbract
= 1.
i
increases 1 so i
= 3.
i = i - toSusbract
(i
= 3 - 1 so i
= 2).
toSusbract
increases 1 so toSusbract
= 2.
... Process continues...
toSubstract
gets bigger than 59 so it is restarted to 0.
time
stops being 9.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…