int depth = 5; int interval = 50; int currentTime; int lastTime; int progress = 0; int lastProgress = 0; //int finished = int(pow(3,depth)); boolean intervalExpired = false; void setup() { size(410, 230); background(255); fill(0); lastTime = millis(); } void draw() { currentTime = millis(); triangle (10, 25, 100, depth); } void triangle (int x, int y, int l, int n) { if (n == 0) { checkIfIntervalExpired(); if (intervalExpired && progress == lastProgress) { text("*", x, y); lastProgress++; intervalExpired = false; } progress++; } else { triangle(x, y+l, l/2, n-1); triangle(x+l, y, l/2, n-1); triangle(x+l*2, y+l, l/2, n-1); } } void checkIfIntervalExpired() { if (currentTime-lastTime > interval) { lastTime = currentTime; progress = 0; intervalExpired = true; } } void keyReleased() { if (key==' ') { // reset progress = 0; lastProgress = 0; background(255); } }