/*Leona Wu *Interactive_drawing_01: Black Rock Shooter *Background, star, jacket, hair will move on x-axis *Background colour changes with mouseX movement *Sword moves on y-axis *MouseY movement will make her eyes and blush brighter *Mouse press will show a flame on one of her eyes */ void setup() { //screen size 400x400 size(400, 400); //remove cursor noCursor(); } void draw() { frameRate(60); rectMode(CORNERS); //background colour goes darker to lighter depending on mouse position of x-axis colorMode(RGB); fill(63, 204, 247); background(mouseX-400, mouseX, mouseX+400); //background color and shades fill(187, 245, 254, 35); rect(0, 60, 400, 400); fill(1, 10, 101, 25); rect(0, 95, 400, 400); fill(28, 91, 250, 25); rect(0, 140, 400, 400); //background shapes row 1 rectMode(CORNERS); fill(8, 43, 101); rect(0, 130, 400, 250); rect(mouseX-400, 100, mouseX-120, 130); quad(mouseX-400, 100, mouseX-400, 80, mouseX-140, 80, mouseX-120, 100); triangle(mouseX-120, 130, mouseX-120, 100, mouseX-90, 130); quad(mouseX+30, 130, mouseX+50, 110, mouseX+90, 110, mouseX+110, 130); quad(mouseX+140, 130, mouseX+180, 80, mouseX+400, 80, mouseX+400, 130); //row 2 fill(125, 191, 252); rect(0, 200, 400, 250); rect(-mouseX-400+width, 180, -mouseX-120+width, 200); quad(-mouseX-400+width, 180, -mouseX-400+width, 160, -mouseX-140+width, 160, -mouseX-120+width, 180); triangle(-mouseX-120+width, 210, -mouseX-120+width, 180, -mouseX-90+width, 210); quad(-mouseX+30+width, 210, -mouseX+50+width, 190, -mouseX+90+width, 190, -mouseX+110+width, 210); quad(-mouseX+140+width, 210, -mouseX+180+width, 160, -mouseX+400+width, 160, -mouseX+400+width, 210); //star shape and movement fill(0, 200); quad(mouseX-25+sin(frameCount*.2), 55+sin(frameCount*.2), mouseX+sin(frameCount*.2), 5, mouseX+25+sin(frameCount*.2), 55+sin(frameCount*.2), mouseX+sin(frameCount*.2), 45); triangle(mouseX-30+sin(frameCount*.2), 20, mouseX+sin(frameCount*.2), 45, mouseX+30+sin(frameCount*.2), 20); fill(255); quad(mouseX-20, 50, mouseX, 10, mouseX+20, 50, mouseX, 40); triangle(mouseX-25, 25, mouseX, 40, mouseX+25, 25); //floor and shading rectMode(CORNERS); noStroke(); fill(33, 40, 50); rect(0, 240, 400, 400); fill(68, 74, 96, 20); rect(0, 290, 400, 400); fill(104, 146, 168, 20); rect(0, 340, 400, 400); fill(129, 194, 214, 20); rect(0, 380, 400, 400); //hood base color and structure fill(3, 10, 26); ellipse(200, 225, 50, 25); fill(3, 10, 26); ellipse(200, 150, 180, 160); //shirt base color and structure fill(3, 10, 26); quad(187, 221, 213, 221, 225, 300, 175, 300); //body base color and structure fill(255, 237, 217); arc(200, 265, 32, 100, 3.15, radians(360)); fill(247, 205, 194); fill(192, 154, 133); arc(200, 246, 23, 55, 3.15, radians(360)); fill(255, 237, 217); arc(200, 265, 30, 55, 3.15, radians(360)); //legs ellipse(192, 272, 15, 40); ellipse(192, 292, 12, 49); ellipse(208, 272, 15, 40); ellipse(208, 292, 12, 49); fill(192, 154, 133); ellipse(192, 296, 12, 15); ellipse(208, 296, 12, 15); //clothing inside covered by jacket fill(0); triangle(193, 225, 199, 240, 188, 240); triangle(207, 225, 201, 240, 212, 240); //pants rectMode(CENTER); fill(0); rect(200, 264, 34, 15); rect(192, 270, 16, 15, 20); rect(208, 270, 16, 15, 20); fill(60, 68, 77, 60); rect(192, 269, 12, 11, 4); rect(208, 269, 12, 11, 4); //shoes fill(3, 10, 26); quad(185, 296, 198, 296, 196, 319, 187, 319); quad(202, 296, 215, 296, 212, 319, 203, 319); fill(34, 81, 107); rect(192, 319, 11, 8, 5); rect(208, 319, 11, 8, 5); fill(255); rect(192, 323, 11, 4); rect(208, 323, 11, 4); //jacket front and movement using mouseX fill(3, 10, 26); quad(187, 218, 197, 225, 189+mouseX/50, 310-mouseX/50, 170-mouseX/50, 308); stroke(255); strokeWeight(2); line(194, 230, 189+mouseX/50, 309-mouseX/50); noStroke(); fill(70, 85, 108); quad(183, 245, 190, 260, 189+mouseX/50, 310-mouseX/50, 170-mouseX/50, 308); fill(3, 10, 26); quad(213, 218, 203, 225, 216+mouseX/50, 310+mouseX/50, 236-mouseX/50, 308-mouseX/50); stroke(255); strokeWeight(2); line(205, 230, 216+mouseX/50, 308+mouseX/50); noStroke(); fill(100, 114, 143); rect(200, 230, 15, 7, 5); fill(177, 185, 206, 100); rect(200, 230, 10, 3, 5); //arms fill(0); ellipse(179, 284, 7, 15); ellipse(221, 284, 7, 15); fill(240, 240, 240); rect(179, 281, 8, 7, 2); rect(221, 281, 8, 7, 2); fill(91, 109, 114); quad(181, 230, 187, 225, 184, 280, 174, 280); fill(70, 85, 108); quad(219, 230, 213, 225, 216, 280, 226, 280); stroke(255); strokeWeight(1); line(219, 230, 213, 225); line(181, 230, 187, 225); noStroke(); //face base color and structure fill(255, 237, 217); ellipse(200, 165, 140, 110); //left eye, arcs and ellipses overlapping ellipseMode(CENTER); fill(3, 2, 53); arc(164, 170, 37, 40, 3.1, radians(360)); fill(2, 38, 142); ellipse(164, 175, 35, 40); noStroke(); fill(120, 190, 243); arc(164, 175, 35, 40, 0, radians(180)); fill(5, 6, 87); ellipse(164, 175, 20, 25); fill(187, 185, 237); arc(164, 175, 7, 12, 0, radians(180)); fill(255); ellipse(179, 170, 15, 6); //right eye fill(3, 2, 53); arc(236, 170, 37, 40, 3.1, radians(360)); fill(2, 38, 142); ellipse(236, 175, 35, 40); noStroke(); fill(120, 190, 243); arc(236, 175, 35, 40, 0, radians(180)); fill(5, 6, 87); ellipse(236, 175, 20, 25); fill(186, 185, 237); arc(237, 175, 7, 12, 0, radians(180)); fill(255); ellipse(252, 170, 15, 6); //eye glow colorMode(HSB); fill(150, 100, 80+mouseY, 50); ellipse(164, 175, 35, 40); ellipse(236, 175, 35, 40); //eye bags colorMode(RGB); fill(255, 237, 217); rectMode(CENTER); rect(164, 195, 30, 10); rect(236, 195, 30, 10); //blush, glows with movement on y-axis colorMode(HSB); fill(0, 190, 50+mouseY, 127); ellipse(164, 197, 29, 9); ellipse(239, 197, 29, 9); //mouth colorMode(RGB); fill(3, 2, 53); rect(200, 200, 3, 1); //hood side triangles noStroke(); fill(144, 157, 176); triangle(108, 160, 130, 160, 150, 220); fill(70, 85, 108); triangle(292, 160, 270, 160, 250, 220); //hair base shapes and color fill(30, 89, 120); arc(200, 150, 140, 100, 3.1, radians(360)); //character bangs and hair movement fill(30, 89, 120); quad(120, 110, 165, 160, 173+mouseX/20, 180, 180, 120); fill(8, 14, 38); quad(125, 110, 130, 145, 140+mouseX/20, 190, 150, 140); fill(30, 89, 120); quad(115, 110, 120, 155, 130+mouseX/20, 205, 155, 145); fill(8, 14, 38); quad(190, 130, 235, 165, 250+mouseX/20, 200, 270, 140); fill(30, 89, 120); quad(250, 110, 275, 153, 250+mouseX/20, 210, 260, 110); fill(8, 14, 38); quad(215, 110, 180, 160, 200+mouseX/20, 190, 210, 150); fill(30, 89, 120); quad(140, 110, 160, 150, 200+mouseX/20, 205, 195, 165); fill(30, 89, 120); quad(200, 110, 160, 150, 200+mouseX/20, 205, 195, 165); fill(30, 89, 120); quad(195, 115, 235, 155, 240+mouseX/20, 210, 270, 110); //hood top fill(70, 85, 108); quad(200, 50, 200, 120, 108, 160, 118, 90); fill(3, 10, 26); quad(200, 50, 200, 120, 292, 160, 285, 90); fill(26, 22, 36, 77); quad(200, 50, 200, 115, 285, 160, 270, 95); fill(26, 22, 36, 110); quad(219, 65, 219, 115, 275, 143, 268, 90); //sword fill(3, 48, 51); quad(60, mouseY+160, 80, mouseY+140, 80, mouseY+20, 60, mouseY+20); fill(174, 176, 171); quad(73, mouseY+147, 80, mouseY+140, 80, mouseY+20, 73, mouseY+20); fill(240, 241, 236); rect(70, mouseY+20, 40, 10, 2); rect(70, mouseY, 10, 40, 2); fill(76, 111, 108); rect(80, mouseY+20, 20, 10); rect(72, mouseY, 5, 40); //sword stand fill(139, 149, 149); quad(40, 400, 100, 400, 85, 320, 55, 320); fill(86, 100, 100); quad(90, 400, 100, 400, 85, 320, 80, 320); } void mousePressed() { frameRate(3); //fire fill(28, 209, 228, 150); triangle(210, 195, 260, 195, 230, 125+sin(frameCount*.10)); fill(0, 80, 238, 120); triangle(220, 190, 250, 190, 230, 130+sin(frameCount*.2)); }