# Lecture 07

While{} blocK:

```int a = 0;
int b = 1;
int sum = a+b;

while (sum < 10000) { // some boolean test!
println(sum);
a = b;
b = sum;
sum = a+b;
}
```

Trigger an event periodically:

```int poopPeriod = 3000;
int lastPoopTime = 0;

void setup(){
}

void draw(){
if ((millis() - lastPoopTime) >= poopPeriod) {
poop();
}
}

void poop(){
// only printed output for now; visuals are up to you
println("At " + millis() + ", I pooped");
lastPoopTime = millis();
}
```

Function that returns a value:

```void setup(){
float f = cos(4.0);
println("My Sum = " + mySum);
}

int addThreeInts (int a, int b, int c){
int sum = a + b + c;
return sum;
}
```

Interpolation (Blurred Integrator / “Zeno’s Interpolation”) to the Mouse

```float px = 0;
float py = 0;

void setup(){
size(400,400);
}

void draw(){
background(127);

float A = 0.95;
float B = 1.0-A;
px = A*px + B*mouseX;
py = A*py + B*mouseY;
ellipse (px,py, 30,30);
}
```

Damping a variable down to zero / Triggering an event sequence

```float py, px;
float vy, vx;
void setup(){
size(400,400);
initiateMovementSequence();
}

void draw(){
float grayColor = map(px, 0,width, 0,255);
background(grayColor);
py += vy;
px += vx;
vy *= 0.96;
vx *= 0.96;
ellipse(px,py, 30,30);
}

void mousePressed(){
// clicking resets the action
initiateMovementSequence();
}

void initiateMovementSequence(){
px = width/2;
py = height/2;
vx = random(-5,5);
vy = random(-5,5);
}
```

Simple Pong

```float px, py;
float vx, vy;
float diam = 80;

void setup(){
size(400,350);
px = width/2;
py = height/2;
vx = random(-10,10);
vy = random(-10,10);
}

void draw(){
background(127);
px += vx;
py += vy;
if ((px < (diam/2)) || (px > (width - diam/2))){
vx = -vx;
}
if ((py < (diam/2)) || (py > (height - diam/2))){
vy = -vy;
}

ellipse(px,py, 80,80);
}

void mousePressed(){
// clicking the mouse randomizes direction
vx = random(-10,10);
vy = random(-10,10);
}
```

Libraries:
Speech synthesizer…
Audio input…