Function draw() gets called automatically and repeatedly
var draw = function() {
// change (x,y) position of circle
// change size of green rectangle
// change rotation angle of blue bar
// change color of ellipse
};
Change size
Rotate
Change color
Change ball position
To animate an object, change its properties such as position, rotation , shape, size, or color
Put code inside function draw() to draw each frame
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var velocity = 2; // speed & direction
var drawBall = function(x, y) {
// set colors
strokeWeight(2);
stroke(26, 0, 255); // dark blue
fill(0, 251, 255); // light blue
// set draw mode and draw the ball
ellipseMode(RADIUS);
ellipse(x, y, radius, radius);
};
var draw = function() {
drawBall(x,y);
};Call function drawBall() inside function draw() -- the ball stands still
Define and initialize variables, set (x,y) in the canvas center
Define function drawBall(x,y) to draw the ball at
specified location
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var velocity = 2; // speed & direction
var drawBall = function(x, y) {...}
var draw = function() {
drawBall(x,y);
x += velocity; // change x position on each frame
if (x < 0 || x > width) { // check left & right boundaries
velocity = -velocity; // reverse direction
}
};
Add code to change the
x position on each frame
Check x against left and right boundaries, and reverse direction if x is outside the boundaries
Pre-existing code, do not retype.
"..." means code is hidden to save space
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var velocity = 2; // speed & direction
var drawBall = function(x, y) {...}
var draw = function() {
background(255, 255, 0); // yellow
drawBall(x,y);
x += velocity; // change x position on each frame
if (x < 0 || x > width) { // check left & right boundaries
velocity = -velocity; // reverse direction
}
};
To remove the blue trail, call background() to set the background color on each frame
This effectively "erases" all drawn objects at the start of each frame
Drawing commands, such as drawBall(), must be done after calling background() to redraw the objects
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var velocity = 2; // speed & direction
var drawBall = function(x, y) {...}
var draw = function() {
background(255, 255, 0); // yellow
drawBall(x,y);
x += velocity; // change x position on each frame
// check left & right boundaries
if (x < radius || x > width-radius) {
velocity = -velocity; // reverse direction
}
};
To get the ball to bounce precisely on the edge, take into account the ball radius on boundary checks
Instead of checking for (x < 0 || x > width),
check for (x < radius || x > width - radius)
"||" means "or",
"&&" means "and"
var draw = function() {
background(255, 255, 255); // white
drawBall(x,y);
x += _________;
if (x < radius || x > ________ - radius) {
xVelocity = -xVelocity; // reverse direction
}
};
This "_______" means to fill in the blanks with the correct code
It could be a variable, a constant value, or some other code snippets
If a solution is provided, hit the down arrow key to see it
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var xVelocity = 2; // x speed & direction
var yVelocity = 1; // y speed & direction
var drawBall = function(x, y) {...}
var draw = function() {
background(255, 255, 255); // white
drawBall(x,y);
x += _________;
y += _________;
// check left & right boundaries
if (x < radius || x > ________ - radius) {
xVelocity = -xVelocity; // reverse direction
}
// check top & bottom boundaries
if (y < radius || y > ________ - radius) {
yVelocity = -yVelocity; // reverse direction
}
};
Replace variable velocity with 2 new variables xVelocity and yVelocity
Change x and y by xVelocity and yVelocity on each frame
Check y against top and bottom edges
Check x against left and right edges
See solution
Text
// ball position, size, and velocity
var x = width/2;
var y = height/2;
var radius = 20;
var xVelocity = 2; // x speed & direction
var yVelocity = 1; // y speed & direction
var drawBall = function(x, y) {...}
var draw = function() {
background(255, 255, 255); // white
drawBall(x,y);
x += xVelocity;
y += yVelocity;
// check left & right boundaries
if (x < radius || x > width-radius) {
xVelocity = -xVelocity; // reverse direction
}
// check top & bottom boundaries
if (y < radius || y > height-radius) {
yVelocity = -yVelocity; // reverse direction
}
};
Replace variable velocity with 2 new variables xVelocity and yVelocity
Change x and y by xVelocity and yVelocity on each frame
Check y against top and bottom edges
Check x against left and right edges
You have learned:
Please enter Bouncy Ball for Exercise Name