/* Designer: Mosang Liu Instructor: Nicolas Hesler Sept 13,2018 */ void setup() { //Set window size size(400, 400); smooth(); //Discard corsor noCursor(); } void draw(){ //Setup frameRate frameRate(120); //Set rect mode rectMode(CORNERS); //Set ellipse mode ellipseMode(CENTER); //Discard stroke noStroke(); //Set background background(100); //Desk gradual change fill(130); rect(0,300,400,320); fill(140); rect(0,320,400,340); fill(150); rect(0,340,400,360); fill(160); rect(0,360,400,380); fill(170); rect(0,380,400,400); //Screen bracket fill(50); triangle(200,280,100,380,300,380); fill(55); rect(100,380,300,400); fill(80,79,75); rect(140,300,260,360); fill(130); ellipse(200,300,80,80); //Display screen fill(110,136,249); rect(10,10,390,290); //Controller stroke(0); strokeWeight(2); line(110,300,50,330); noStroke(); fill(90,37,43); rect(0,330,100,380,12,12,12,12); fill(26); rect(20,340,30,370,3,3,3,3); rect(10,350,40,360,3,3,3,3); fill(53,20,178); ellipse(60,350,20,20); fill(145,5,28,(sin((mouseX+mouseY)*.01*HALF_PI)*255)); ellipse(60,350,20,20); fill(145,5,28); ellipse(80,360,20,20); fill(53,20,178,(sin((mouseX+mouseY)*.01*HALF_PI)*255)); ellipse(80,360,20,20); //Moving mouse strokeWeight(1); fill(90,37,43); ellipse(320+mouseX*.15,330+mouseY*.1,40,60); stroke(255); line(300+mouseX*.15,330+mouseY*.1,340+mouseX*.15,330+mouseY*.1); line(320+mouseX*.15,300+mouseY*.1,320+mouseX*.15,330+mouseY*.1); strokeWeight(2); stroke(0); line(260,300,320+mouseX*.15,300+mouseY*.1); /* In the beginning, these lines and shapes are begin and end at intersections on the graph paper. Yet, they are exceed the blocks and the pipe. So I made a little adjustment to make it looks not that weird. */ //Blocks noStroke(); fill(219,79,17); rect(30,110,70,150); rect(110,110,150,150); rect(190,110,230,150); stroke(0); line(30,120,229,120); line(30,130,229,130); line(30,140,229,140); line(50,110,50,120); line(40,120,40,130); line(60,120,60,130); line(50,130,50,140); line(40,140,40,149); line(60,140,60,149); line(130,110,130,120); line(120,120,120,130); line(140,120,140,130); line(130,130,130,140); line(120,140,120,149); line(140,140,140,149); line(210,110,210,120); line(200,120,200,130); line(220,120,220,130); line(210,130,210,140); line(200,140,200,149); line(220,140,220,149); //Item blocks stroke(0); strokeWeight(1); fill(168,82,4); rect(70,110,110,150); fill(223,157,37); rect(150,110,190,150); strokeWeight(4); point(75,115); point(105,115); point(75,145); point(105,145); point(155,115); point(185,115); point(185,145); point(155,145); //question mark stroke(172,86,7); line(164,119,164,128); line(166,118,174,118); line(176,119,176,128); line(176,128,170,133); line(170,133,170,138); point(170,143); //Pipe stroke(0); strokeWeight(2); fill(145,236,8); rect(290,200,388,240); rect(298,240,380,289); //Pipe hightligth+shadow noStroke(); fill(26,171,4); rect(292,205,310,210); rect(330,205,387,210); rect(300,210,310,239); rect(330,210,335,239); rect(340,210,360,239); rect(310,242,320,288); rect(335,242,340,288); rect(350,242,360,288); rect(370,210,380,220); rect(360,220,370,230); rect(370,230,380,239); rect(360,242,370,250); rect(360,260,370,270); rect(360,280,370,288); rect(370,250,379,260); rect(370,270,379,280); //Moving mushroom fill(222,157,41); ellipse(130+sin(frameCount*.01)*90,70,16,19); ellipse(110+sin(frameCount*.01)*90,90,19,18); ellipse(150+sin(frameCount*.01)*90,90,19,18); triangle(130+sin(frameCount*.01)*90,60,100+sin(frameCount*.01)*90,90,160+sin(frameCount*.01)*90,90); rect(110+sin(frameCount*.01)*90,80,150+sin(frameCount*.01)*90,100); fill(255); rect(120+sin(frameCount*.01)*90,100,140+sin(frameCount*.01)*90,110,0,0,6,6); fill(170,30,27); rect(110+sin(frameCount*.01)*90,90,120+sin(frameCount*.01)*90,100); rect(140+sin(frameCount*.01)*90,90,150+sin(frameCount*.01)*90,100); rect(120+sin(frameCount*.01)*90,75,130+sin(frameCount*.01)*90,85); triangle(140+sin(frameCount*.01)*90,70,140+sin(frameCount*.01)*90,80,150+sin(frameCount*.01)*90,80); //Cloud /* I create queued clouds for a continuing movement. However,I can't make a streaming circle with allowed statements. It can run for a while but will stop after clouds are depleted. */ rectMode(CENTER); fill(230); ellipse(frameCount*.3-20,30,40,20); ellipse(frameCount*.3-0,40,20,20); ellipse(frameCount*.3-40,40,20,20); rect(frameCount*.3-20,40,40,20); ellipse(frameCount*.3-420,30,40,20); ellipse(frameCount*.3-400,40,20,20); ellipse(frameCount*.3-440,40,20,20); rect(frameCount*.3-420,40,40,20); ellipse(frameCount*.3-820,30,40,20); ellipse(frameCount*.3-800,40,20,20); ellipse(frameCount*.3-840,40,20,20); rect(frameCount*.3-820,40,40,20); ellipse(frameCount*.3-1220,30,40,20); ellipse(frameCount*.3-1200,40,20,20); ellipse(frameCount*.3-1240,40,20,20); rect(frameCount*.3-1220,40,40,20); ellipse(frameCount*.3-1620,30,40,20); ellipse(frameCount*.3-1600,40,20,20); ellipse(frameCount*.3-1640,40,20,20); rect(frameCount*.3-1620,40,40,20); ellipse(frameCount*.3-2020,30,40,20); ellipse(frameCount*.3-2000,40,20,20); ellipse(frameCount*.3-2040,40,20,20); rect(frameCount*.3-2020,40,40,20); //Mario /*I'm so sorry I cheated. I used a out sourse picture as a reference to make my Mario looks perfect, because the one that I designed is a faulty part, I can't make a Mario witch can quite compare to the original one. */ rectMode(CORNERS); //Yellow parts fill(255,163,71); rect(70,225,75,235); rect(75,220,110,245); rect(105,225,115,235); rect(115,230,120,235); rect(105,240,110,245); rect(60,260,70,275); rect(70,265,75,270); rect(105,265,110,270); rect(110,260,120,275); //Green parts fill(175,127,0); rect(70,220,85,225); rect(95,220,100,230); rect(65,225,70,240); rect(70,235,75,240); rect(75,225,80,235); rect(80,230,85,235); rect(100,230,105,235); rect(95,235,115,240); rect(70,245,110,250); rect(65,250,115,255); rect(60,255,120,260); rect(70,260,110,265); rect(65,280,80,290); rect(60,285,65,290); rect(100,280,115,290); rect(115,285,120,290); //Red parts fill(248,56,0); rect(75,210,100,215); rect(70,215,115,220); rect(80,245,85,255); rect(80,255,95,260); rect(95,245,100,260); rect(75,260,105,275); rect(70,270,85,280); rect(95,270,110,280); //Buttens fill(255,163,71); rect(80,260,85,265); rect(95,260,100,265); //Screen frame fill(70,69,65); rect(0,0,10,300); rect(10,0,400,10); rect(390,10,400,290); rect(10,290,400,300); } //Let Mario Jump by mouseClicked() //Hide standing Mario and make a Jumping Mario void mouseClicked(){ //Reduce frameRate, adjust time of duration. frameRate(1.5); //Hide Mario fill(110,136,249); rect(60,210,120,290); //Hide mushroom fill(110,136,249); rect(10,60,250,110); //Jumping Mario //Yellow parts fill(255,163,71); rect(115,150,130,165); rect(80,165,110,190); rect(75,170,80,180); rect(110,170,120,175); rect(110,175,125,180); rect(110,185,115,190); rect(50,200,65,210); rect(55,210,60,215); //Green parts fill(175,127,0); rect(75,165,90,170); rect(100,165,105,175); rect(115,165,130,180); rect(70,170,75,185); rect(75,180,80,185); rect(80,170,85,180); rect(85,175,90,180); rect(105,175,110,180); rect(100,180,125,185); rect(115,185,120,190); rect(55,195,60,200); rect(60,190,115,205); rect(125,200,130,205); rect(120,205,130,220); rect(65,210,70,215); rect(60,215,75,220); rect(55,220,70,225); rect(55,225,60,230); //Red parts fill(248,56,0); rect(80,155,100,160); rect(75,160,120,165); rect(85,190,90,195); rect(105,190,110,195); rect(90,195,95,200); rect(110,195,115,200); rect(90,200,115,205); rect(75,205,120,220); rect(70,220,105,205); rect(70,205,90,230); //Nose+Button fill(255,163,71); rect(110,170,120,175); rect(110,175,125,180); rect(100,205,105,210); rect(110,205,115,210); //Green pixel fill(175,127,0); rect(80,205,85,210); //Mushroom fill(222,157,41); ellipse(90,70,16,19); ellipse(70,90,19,18); ellipse(110,90,19,18); triangle(90,60,60,90,120,90); rect(70,80,110,100); fill(255); rect(80,100,100,110,0,0,6,6); fill(170,30,27); rect(70,90,80,100); rect(100,90,110,100); rect(80,75,90,85); triangle(100,70,100,80,110,80); }