/******************************************************************
*File Name: Ryu Program
*Author: Jacob Estrella
*Date: September 22,2016
*Description: An interactive drawing featuring Ryu from Street
*Fighter. Shaking the mouse controls the opacity/size of the
*Hadouken Sprite and its particles. When the player presses a key,
*the sprite is then thrown, and the phrase "HADOUKEN!" displays.
******************************************************************/
void setup()
{
size(400,400);
}
//Hadouken Charge Animation
void draw()
{
frameRate(60);
background(0);
noStroke();
//Shadow
fill(150);
ellipse(180,340,180,40);
//Right Bicep
fill(222,185,135);
rect(220,100,40,60);
//Body
fill(255);
quad(140,100,240,100,220,220,160,220);
//Right Forearm
fill(222,185,135);
quad(260,150,260,180,180,180,180,160);
//Legs
fill(255);
//Left Thigh
triangle(180,180,180,260,140,260);
//Right Thigh
triangle(200,180,200,260,240,260);
//Left Calf
triangle(140,260,180,260,140,340);
//Right Calf
triangle(200,260,240,260,240,340);
//Feet
fill(222,185,135);
//Left Foot
quad(140,320,140,340,170,340,170,330);
//Right Foot
quad(240,320,240,340,270,340,270,330);
//Left Arm
fill(222,185,135);
//Bicep
quad(160,100,80,100,80,120,160,140);
//Forearm
rect(80,100,20,40);
//Right Hand Thumbs
rect(190,144,8,16,50);
//Left Hand Thumbs
rect(100,140,16,8,50);
//Gloves
fill(128,0,0);
//Right Glove
ellipse(190,170,30,30);
//Left Glove
ellipse(90,140,30,30);
//Right Hand Fingers
fill(222,185,135);
//Index
rect(170,155,16,8,50);
//Middle
rect(170,162,16,8,50);
//Ring
rect(170,170,16,8,50);
//Pinky
rect(170,178,16,8,50);
//Left Hand Fingers
//Index
rect(97,145,8,16,50);
//Middle
rect(90,145,8,16,50);
//Ring
rect(83,145,8,16,50);
//Pinky
rect(76,145,8,16,50);
//Exposed Chest
fill(222,185,135);
triangle(200,100,230,100,220,160);
//Head
fill(222,185,135);
ellipse(210,90,60,60);
//Hair
fill(128,0,0);
//Top Piece
rect(180,60,60,20,50);
//Side Piece
rect(180,60,20,40,50);
//Belt
//Outline
stroke(255);
fill(0);
//Left Belt Flap
triangle(180,200,200,200,180,240);
//Right Belt Flap
triangle(180,200,200,200,200,240);
//Centre Belt
rect(150,200,80,20);
//Head Band
noStroke();
fill(255,0,0);
//Main Head Band
rect(180,80,60,10);
//Hand Band Tail
triangle(190,80,175,80,175,100);
//Hadouken Sprite
//mouseX and mouseY allows for variation in the main sprite opacity/size
fill(0,0,205,mouseY);
ellipse(120,190,60+(mouseY/100),60+(mouseY/100));
fill(65,105,225,mouseY);
ellipse(120,190,55+(mouseY/100),55+(mouseY/100));
fill(0,191,255,mouseX);
ellipse(120,190,50+(mouseX/100),50+(mouseX/100));
fill(0,255,255,mouseX);
ellipse(120,190,45+(mouseX/100),45+(mouseX/100));
//Hadouken Sprite Particles
//mouseX and mouseY allows for variation in the sprite particle opacity/size
//White Particles
fill(255,255,255,mouseX);
ellipse(90,190,random(8,15),random(8,15));
fill(255,255,255,(mouseX+2));
ellipse(120,220,random(8,15),random(8,15));
fill(255,255,255,(mouseX/2));
ellipse(140,170,random(8,15),random(8,15));
fill(255,255,255,(mouseX*2));
ellipse(140,200,random(8,15),random(8,15));
//Blue Particles
fill(0,191,255,mouseY);
ellipse(110,170,random(8,15),random(8,15));
fill(0,191,255,(mouseY*2));
ellipse(110,200,random(8,15),random(8,15));
fill(0,191,255,(mouseY+2));
ellipse(135,175,random(8,15),random(8,15));
}
//Throw Animation
void keyPressed()
{
frameRate(1);
background(0);
noStroke();
//Shadow
fill(150);
ellipse(180,340,180,40);
//Right Arm
fill(222,185,135);
rect(220,100,120,30);
//Body
fill(255);
quad(140,100,240,100,220,220,160,220);
//Legs
//Left Thigh
triangle(180,180,180,260,140,260);
//Right Thigh
triangle(200,180,200,260,240,260);
//Left Calf
triangle(140,260,180,260,140,340);
//Right Calf
triangle(200,260,240,260,200,340);
//Feet
fill(222,185,135);
//Left Foot
quad(140,320,140,340,170,340,170,330);
//Right Foot
quad(200,320,200,340,230,340,230,330);
//Left Arm
//Bicep
quad(140,100,120,160,140,160,180,100);
//Forearm
quad(125,150,110,180,200,180,200,160);
//Exposed Chest
fill(222,185,135);
triangle(200,100,230,100,220,160);
//Gloves
fill(128,0,0);
//Left Glove
ellipse(190,170,30,30);
//Right Glove
ellipse(340,115,30,30);
//Left Hand Fingers
fill(222,185,135);
//Index
rect(195,155,12,8,50);
//Middle
rect(195,162,12,8,50);
//Ring
rect(195,169,12,8,50);
//Pinky
rect(195,176,12,8,50);
//Right Hand Fingers
//Thumb
rect(335,115,12,8,50);
//Index
rect(350,105,8,20,50);
//Head
fill(222,185,135);
ellipse(210,90,60,60);
//Hair
fill(128,0,0);
//Top Piece
rect(180,60,60,20,50);
//Side Piece
rect(180,60,20,40,50);
//Belt
stroke(255);
fill(0);
//Left Belt Flap
triangle(180,200,200,200,180,240);
//Right Belt Flap
triangle(180,200,200,200,200,240);
//Centre Belt
rect(150,200,80,20);
//Head Band
noStroke();
fill(255,0,0);
//Main Head Band
rect(180,80,60,10);
//Head Band Tail
triangle(190,80,175,80,175,100);
//Hadouken
println("HADOUKEN!");
}