float x, y; // posição do círculo float vx, vy; // velocidade boolean sx, sy; // indica a direcção do movimento: true - direita/baixo void setup() { size(500, 500); frameRate(10); x = 100; y = 100; vx = 1; vy = 1; sx = true; sy = true; } void draw() { ellipse(x, y, 30, 30); x = x + vx; y = y + vy; // se bateu invertemos a direcção if (x > 500 || x < 0) { sx = !sx; } if (y > 500 || y < 0) { sy = !sy; } // consoante a direcção, a velocidade é positiva // ou negativa e proporcional à posicao. // Somamos dois para garantir que nunca é zero (o círculo // parava) if (sx) { vx = x/100+2; } else { vx = -x/100-2; } if (sy) { vy = y/100+3; } else { vy = -y/100-3; } }