Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
*******************************************
Title: Interactive Drawing - Magic Rabbit
Date last edited: September 19th,2015
by: Aaron Sutton
*******************************************
*/

//setup*********************************************************************************************
//"void setup" sets up the basics, only goes through a single cycle
void setup() {
  //sets the window size "400x400"
  size(400,400);
  /*sets the drawing mode for rectangles to the "Corner" mode
  What this means is that you set the x-y variables for the upper-left corner first
  and set the bottom left x-y variables second*/
  rectMode(CORNERS);
  /*sets the drawing mode for the ellipses as "Center"
  What this means is that you state the x-y variable of the center of the ellipse first
  and set the x value for the width and a y value for the height, respectively*/
  ellipseMode(CENTER);
}
//end setup cycle************************************************************************************


//setup draw cycle***********************************************************************************
/*"draw" will create every object listed for every frame (currently set to the standard 60 frames per second)
endlessly until program is closed*/
void draw() {
  //sets the background colour to black
  background(0);
  
  //create a stage to go along with the background*****************
  
  //set a brown outline
  stroke(44,13,13);
  
  //set an outline thickness value
  strokeWeight(1);
  
  //sets stage colour to light brown
  fill(116,74,50);
  
  //creates the main stage*****************************************
  rect(0,180,400,400);
  
  //creates the individual plank appearance**************************
  line(20,400,40,180);
  line(60,400,80,180);
  line(100,400,120,180);
  line(140,400,160,180);
  line(230,400,210,180);
  line(270,400,250,180);
  line(310,400,290,180);
  line(350,400,330,180);
  line(390,300,370,180);
  
  //Create body*****************************
  //sets each shape drawn with no outline from here on, until told otherwise
  noStroke();
  
  //sets fill colour to white
  fill(255);
  
  //follows below the mouse vertically, due to mouseY+200
  //+200 to mouseY makes the body follow at 200 pixels below the mouse position
  ellipse(200,mouseY+200,90,100);
  
  
  
  //draw the bunny's ears******************************
  //follows below the mouse vertically, due to mouseY+70
  //+70 to mouseY makes the ears follow at 70 pixels below the mouse position
  ellipse(170,mouseY+70,40,80);
  ellipse(230,mouseY+70,40,80);
  
  //Draw bunny ear holes*******************************
  //black outline for drawn shapes from here on until told otherwise
  stroke(0);
  
  //sets the thickness for outline to 0.5
  strokeWeight(0.5);
  
  //sets color to pink
  fill(246,167,245);

  //follows below the mouse vertically, due to mouseY+80
  //+80 to mouseY makes the ear holes follow at 80 pixels below the mouse position
  ellipse(172,mouseY+80,20,55);
  ellipse(227,mouseY+80,20,56);
  
  
  //Draw bunny's head***********************************
 //sets no outline for shapes drawn from this point onward until told otherwise
  noStroke();
  
  //sets the color to white
  fill(255); 
  
  //follows below the mouse vertically, due to mouseY+125
  //+125 to mouseY makes the head follow at 125 pixels below the mouse position
  ellipse(200,mouseY+125,100,100);
  
  //draw bunny's eyes*********************************
  //set fill to black
  fill(0);
  
  //follows below the mouse vertically, due to mouseY+125 and mouseY+118
  //+125 and +118 to mouseY makes the eyes follow at 125 and 118 pixels below the mouse position
  ellipse(185,mouseY+125,13,30);
  ellipse(213,mouseY+125,13,30);
  //sets color to white
  fill(255);
  ellipse(187,mouseY+118,5,5);
  ellipse(215,mouseY+118,5,5);
  
  //Draw Bunny's cheeks*******************************
  //set outline color to black
  stroke(0);
  
  //set color to a very light gray
  fill(200);
  
  //draw the bunny's cheeks
  //follows below the mouse vertically, due to mouseY+158
  //+158 to mouseY makes the cheeks follow at 158 pixels below the mouse position
  ellipse(187,mouseY+158,25,12);
  ellipse(212,mouseY+158,25,12);
  
  //draws bunny's cheeks*****************************************
  //sets no outline for drawn shapes from this point onward until told otherwise
  noStroke();
  
  //sets color to black
  fill(0);
  
  //draw the bunny's whiskers (left)
  //follows below the mouse vertically, due to mouseY+157 and mouseY+161
  //+157 and +167 to mouseY makes the whiskers follow at 157 and 167 pixels below the mouse position
  ellipse(190,mouseY+157,3,3);
  ellipse(182,mouseY+157,3,3);
  ellipse(186,mouseY+161,3,3);
  
  //draw the bunny's whiskers (right)
  //follows below the mouse vertically, due to mouseY+157 and mouseY+161
  //+157 and +167 to mouseY makes the whiskers follow at 157 and 167 pixels below the mouse position
  ellipse(208,mouseY+157,3,3);
  ellipse(216,mouseY+157,3,3);
  ellipse(212,mouseY+161,3,3);
  
  //Draw the bunny's nose*******************************************  
  //sets outline to black
  stroke(0);
  
  //sets color to pink
  fill(246,167,245);
  
  //follows below the mouse vertically, due to mouseY+150 and mouseY+145
  //+150 and +145 to mouseY makes the nose follow at 150 and 145 pixels below the mouse position
  ellipse(200,mouseY+150,8,15);
  ellipse(200,mouseY+145,15,10);
  
  //Draw magic hat*****************************************************
  //sets fill color to dark blue
  fill(6,25,62);
  
  //draws top of the hat
  rect(60,200,340,240);
  
  //draws the bottom of the hat
  rect(100,240,300,400);
  
  //sets color to white, second value sets opacity
  fill(255, 200);
  
  //draws the ribbon of the hat
  rect(100,240,300,280);
  
  //draw spotlight***************************************************  
  //sets no outline to drawn objects from this point onward until told otherwise
  noStroke();
  //sets color to yellow, fourth value sets the opacity
  fill(252,252,0,60);
  
  //the spotlight will follow the X-position (horizontal) of the mouse due to mouseX+180 and mouseX-180
  //one point of the drawn shape will follow behind the mouse by 180 pixels, while the other drawn point will follow ahead by 180 pixels
  //the other two drawn points won't follow the mouse
  quad(150,0,250,0,mouseX+180,400,mouseX-180,400);
  
  
  //draw curtains*******************************************************  
  //sets fill color to red
  fill(180,33,33);
  
  //draws the curtain
  ellipse(20,40,100,300);
  ellipse(380,40,100,300);
  ellipse(20,300,90,250);
  ellipse(380,300,90,250);
  
  //sets fill color to yellow
  fill(250,255,3);
  
  //draws curtain strings
  ellipse(20,180,50,20);
  ellipse(380,180,50,20);
  
  //sets outline of drawn shapes
  //sets outline colour to dark red
  stroke(93,7,7);
  //sets thickness of outlines value to 1
  strokeWeight(1);
  
  //draws lines for the appearance of curtain folds
  line(10,140,20,20);
  line(40,130,50,30);
  line(10,380,20,205);
  line(35,390,35,205);
  line(350,30,370,130);
  line(380,20,395,140);
  line(350,380,370,205);
  line(375,390,385,205);
}
//end draw cycle***********************************************************************************************

//sets commands for everytime the mouse is pressed*************************************************************
void mousePressed(){
  //sets the frame rate to 1 frame per second
frameRate(1);
//sets background color to black
background(0);

  //create a stage to go along with the background***************************
  //set a brown outline
  stroke(44,13,13);
  
  //set an outline thickness value
  strokeWeight(1);
  
  //sets stage colour to light brown
  fill(116,74,50);
  
  //creates the main stage
  rect(0,180,400,400);
  
  //creates the individual plank appearance
  line(20,400,40,180);
  line(60,400,80,180);
  line(100,400,120,180);
  line(140,400,160,180);
  line(230,400,210,180);
  line(270,400,250,180);
  line(310,400,290,180);
  line(350,400,330,180);
  line(390,300,370,180);
  
  //Draw hat********************************************  
  //sets fill color to dark blue
  fill(6,25,62);
  
  //draws top of the hat
  rect(60,200,340,240);
  
  //draws the bottom of the hat
  rect(100,240,300,400);
  
  //sets color to white, second value sets opacity
  fill(255, 200);
  
  //draws the bottom of the hat
  rect(100,240,300,280);
  
  //Draw spotlight****************************************  
  //sets no outline to drawn objects from this point onward until told otherwise
  noStroke();
  
  //sets color to yellow, fourth value sets the opacity
  fill(252,252,0,60);
  
  //the spotlight will sit on the center of screen until the "draw cycle" repeats when the mouse is released
  quad(150,0,250,0,380,400,20,400);
  
  //Draw curtain******************************************
  //Writes "Ta-Da" in the output
  println("Ta-Da");
  //sets fill color to red
  fill(180,33,33);
  
  //draws the curtain
  ellipse(20,40,100,300);
  ellipse(380,40,100,300);
  ellipse(20,300,90,250);
  ellipse(380,300,90,250);
  
  //sets fill color to yellow
  fill(250,255,3);
  
  //draws curtain strings
  ellipse(20,180,50,20);
  ellipse(380,180,50,20);
  
  //sets outline of drawn shapes
  //sets outline colour to dark red
  stroke(93,7,7);
  //sets thickness of outlines value to 1
  strokeWeight(1);
  
  //draws lines for the appearance of curtain folds
  line(10,140,20,20);
  line(40,130,50,30);
  line(10,380,20,205);
  line(35,390,35,205);
  line(350,30,370,130);
  line(380,20,395,140);
  line(350,380,370,205);
  line(375,390,385,205);
  
}
//End of the mousePressed cycle*******************************************************************************************

//Sets the commands for when the mouse is released************************************************************************
void mouseReleased(){
  //returns the frame rate to the default setting, and the setting for the draw cycle
  //sets frame rate to 60 frames per second
  frameRate(60);
}
//End mouseReleased cycle*************************************************************************************************