Revise Example 4-8 so that Zoog shakes left and right as Zoog moves upward. Hint: this requires the use of random() in combination with zoogX.
zoogX = _____________________________;
// Learning Processing
// Daniel Shiffman
// http://www.learningprocessing.com
// Exercise 4-6: Revise Example 4-8 so that Zoog shakes left and right as Zoog moves upward.
// Hint: this requires the use of random() in combination with zoogX.
// zoogX = ____________________________;
// Declaring Variables.
// zoogX and zoogY are for feature #1. eyeR, eyeG, eyeB are for feature #2.
float zoogX;
float zoogY;
float eyeR;
float eyeG;
float eyeB;
void setup() {
size(200,200); // Set the size of the window
// Feature #1. zoogX and zoogY are initialized based on the size of the window.
// Note we cannot initialize these variables before the size() function is called
// since we are using the built-in variables width and height.
zoogX = width/2; // Zoog always starts in the middle
zoogY = height + 100; // Zoog starts below the screen
smooth();
}
void draw() {
background(255); // Draw a white background
// Set ellipses and rects to CENTER mode
ellipseMode(CENTER);
rectMode(CENTER);
// Draw Zoog's body
stroke(0);
fill(150);
// Feature #1. zoogX and zoogY are used for the shape locations.
rect(zoogX,zoogY,20,100);
// Draw Zoog's head
stroke(0);
fill(255);
ellipse(zoogX,zoogY-30,60,60);
// Draw Zoog's eyes
// Feature #2. eyeR, eyeG, and eyeB are given random values and used in the fill() function.
eyeR = random(255);
eyeG = random(255);
eyeB = random(255);
fill(eyeR,eyeG,eyeB);
ellipse(zoogX-19,zoogY-30,16,32);
ellipse(zoogX+19,zoogY-30,16,32);
// Draw Zoog's legs
stroke(150);
line(zoogX-10,zoogY+50,zoogX-10,height);
line(zoogX+10,zoogY+50,zoogX+10,height);
// Zoog moves up
zoogY = zoogY - 1;
// EXERCISE SOLUTION
zoogX = zoogX + random(-5,5);
}









There’s a small error on the code of the answer, in is legs…
It says:
// Draw Zoog’s legs
stroke(150);
line(zoogX-10,zoogY+50,zoogX-10,height);
line(zoogX+10,zoogY+50,zoogX+10,height);
I belive it should be something like:
line(zoogX-10,zoogY+50,zoogX-15,zoogY+65);
line(zoogX+10,zoogY+50,zoogX+15,zoogY+65);
PS: Thanks for this exercises!
Comment by Nuno Araujo — February 12, 2010 @ 11:29 am
Thanks for the comment. For some reason I made this example (and exercise) have Zoog’s legs attached to the bottom of the window. But there’s no particular reason for this so your alternative is a good one!
Comment by Daniel Shiffman — February 15, 2010 @ 8:15 am