/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.n3zAlnxKVUP/rev.11
*
* authors:
* GoToLoop
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
/*
* Bouncing Balloons (v3.37)
*
* forum.processing.org/topic/using-arrays-to-create-and-change-circles
* http://forum.processing.org/topic/object
* http://forum.processing.org/topic/balloon-string
*
* studio.processingtogether.com/sp/pad/export/ro.9FqnMDLUZqQCV/latest
*
*/
final static color BG = 0, FG = -1;
final static byte FPS = 60;
final static byte NUM = 3;
final static myBalloon[] balloons = new myBalloon[NUM];
void setup() {
size (500, 500);
smooth();
frameRate(FPS);
balloons[0] = new myBalloon(
120, 70, // initX, initY
50, 40, // sizeX, sizeY
7, 1, // moveX, moveY
#0000FF); // colour
balloons[1] = new myBalloon(
320, 400, // initX, initY
40, 50, // sizeX, sizeY
2, -9, // moveX, moveY
#00A000); // colour
balloons[2] = new myBalloon(
250, 250, // initX, initY
30, 30, // sizeX, sizeY
-7, 4, // moveX, moveY
#D00000); // colour
}
void draw() {
background(BG);
for (myBalloon ball: balloons) ball.all();
}
final class myBalloon {
int x, y;
final int szX, szY, hfX, hfY;
int mvX, mvY;
final color cor;
myBalloon (
int initX, int initY,
int sizeX, int sizeY,
int moveX, int moveY,
color colour ) {
x = initX;
y = initY;
szX = sizeX;
szY = sizeY;
mvX = moveX;
mvY = moveY;
cor = colour;
hfX = sizeX >> 1;
hfY = sizeY >> 1;
}
void all() {
updateBalloon();
displayBalloon();
displayBalloonString();
}
void updateBalloon() {
if (x < hfX | x > width - hfX) mvX *= -1;
if (y < hfY | y > height - hfY) mvY *= -1;
x += mvX;
y += mvY;
}
void displayBalloon() {
fill(cor);
ellipse(x, y, szX, szY);
}
void displayBalloonString() {
stroke(FG);
line( x, y + hfY, x - mvX, y + szY );
noStroke();
}
}