// GhostRave by Hannah McIntear
//When the mouse is moved up and down the ghost moves and the dance floor flashes
//When the mouse is moved left and right the lasers wave around the screen
//Move the mouse in a circle for the best effect!
void setup() {
//Set the size of window
size(400,400);
smooth();
//Set frame rate to 30
frameRate(30);
}
void draw() {
//Draws the background
background(0);
strokeWeight(10);
//Dance floor squares
//Green & purple squares
fill(255,77,225);
stroke(1);
//Top left
fill(255,77,225);
quad(-10,200,100,200,87,250,-10,250);
//Top left alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(-10,200,100,200,87,250,-10,250);
//Top middle right
fill(255,77,225);
quad(200,200, 300,200, 313,250, 200,250);
//Top middle right alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(200,200, 300,200, 313,250, 200,250);
//Middle middle left
fill(255,77,225);
quad(87,250, 200,250, 200,325, 69,325);
//Middle middle left alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(87,250, 200,250, 200,325, 69,325);
//Middle right
fill(255,77,225);
quad(313,250,410,250, 410, 325, 331,325);
//Middle right alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(313,250,410,250, 410, 325, 331,325);
//Bottom left
fill(255,77,225);
quad(-10, 325, 69,325, 50,400, -10,400);
//Bottom left alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(-10, 325, 69,325, 50,400, -10,400);
//Bottom middle right
fill(255,77,225);
quad(200,325,331,325,350,400,200,400);
//Bottom middle right alt color
fill(107,255,88, mouseY/(width*0.5)*255);
quad(200,325,331,325,350,400,200,400);
//Blue & red squares
//Top middle left
fill(63,255,252);
quad(100,200,200,200,200,250,87,250);
//Top middle left alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad(100,200,200,200,200,250,87,250);
//Top right
fill(63,255,252);
quad(300,200, 410,200, 410,250,313,250);
//Top right alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad(300,200, 410,200, 410,250,313,250);
//Middle left
fill(63,255,252);
quad(-10, 250, 87,250, 69,325, -10,325);
//Middle left alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad(-10, 250, 87,250, 69,325, -10,325);
//Middle middle right
fill(63,255,252);
quad(200,250,313,250,331,325,200,325);
//Middle middle right alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad(200,250,313,250,331,325,200,325);
//Bottom middle left
fill(63,255,252);
quad (69,325, 200,325, 200,400, 50,400);
//Bottom middle left alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad (69,325, 200,325, 200,400, 50,400);
//Bottom right
fill(63,255,252);
quad(331,325,410,325,410,400, 350,400);
//Bottom right alt color
fill(210,48,31, mouseY/(width*0.5)*255);
quad(331,325,410,325,410,400, 350,400);
//Ghost's Shadow
noStroke();
fill(175,150);
ellipse(200, mouseY+height/2, mouseY-1,20);
//Lasers that go behind Ghost
strokeWeight(4);
stroke(random(255), random(255), random(255), 200);
line(30,60, mouseX+20, 410);
line(370,60,mouseX+1,410);
//Ghost
noStroke();
//Ghost's head
fill(255);
ellipse(200,mouseY,100,100);
//Ghost's body
rect(150, mouseY, 100,75);
//Ghost legs
triangle(150,mouseY+75,175,mouseY+75,162.5,mouseY+100);
triangle(175,mouseY+75, 200,mouseY+75, 187.5,mouseY+100);
triangle(200, mouseY+75, 225,mouseY+75, 212.5,mouseY+100);
triangle(225, mouseY+75, 250, mouseY+75, 237.5,mouseY+100);
//Ghost's eyes
fill(0);
ellipse(180, mouseY, 10,15);
ellipse(220,mouseY,10,15);
//Lights
fill(255,150);
triangle(50,20,70,60,30,60);
triangle(350,20,370,60,330,60);
//Lasers that go in front of Ghost
strokeWeight(4);
stroke(random(255), random(255), random(255), 200);
line(68,60,mouseX/2,410);
line(49,60,mouseX+350,410);
line(330,60,mouseX*2,410);
line(350,60,mouseX+300,410);
}