/////San Francisco Scene///// /* Sept 22nd 2016 Intro to Media Computation Instructor: Nicolas Hesler Created by: William Lu Mouse movement up and down controls the time of day, while left and right scrolls through the scene horizontally. Clicking displays the title. */ void setup() { //Setting the canvas size size (400,400); noStroke(); smooth(); //No default cursor. Instead, I implemented a custom one (drawn last). noCursor(); } void draw() { //reseting the frame rate; when you click, the frameRate is set to 1 (see bottom) so this line resets it to normal frameRate(60); //Colour of dusk. This is the default background colour background (253,173,163); // Colour of day, opacity fades out based on mouseY. The background dusk colour seeps through when mouseY is about halfway down rectMode(CORNERS); fill(172,231,242,350-mouseY*2); rect (0,0,400,400); //Colour of night, turns night after dusk, when mouse reaches to the bottom fill(119,114,173,(mouseY)/1.5); rect (0,0,400,400); /////////////////// ///////SKY///////// /////////////////// //Stars, multiple parallaxes, varying amounts of opacity jitter, also varying sizes. //parallexes are controlled by different values multiplied to mouseX //opacity jitter is achieved by using sin and frameCount when calculating opacity //mouseY is divided by 2 and -30 so that the stars fade out when mouseY is past the middle //frameCount is multiplied by a small number so that the resulting opacity changes slowly fill(255,255,190,mouseY/2-30-70*sin(frameCount*0.03)); rectMode(CORNERS); rect(100-mouseX*0.01,100,103-mouseX*0.01,103); rect(140-mouseX*0.015,70,145-mouseX*0.015,75); rect(20-mouseX*0.01,30,22-mouseX*0.01,32); fill(255,255,190,mouseY/2-30-100*sin(frameCount*0.01)); rect(350-mouseX*0.015,115,353-mouseX*0.015,118); rect(260-mouseX*0.02,25,263-mouseX*0.02,28); rect(215-mouseX*0.025,90,220-mouseX*0.025,95); fill(255,255,190,mouseY/2-30-70*cos(frameCount*0.03)); rect(365-mouseX*0.01,55,370-mouseX*0.01,60); rect(300-mouseX*0.02,70,305-mouseX*0.02,75); rect(90-mouseX*0.01,5,95-mouseX*0.01,10); fill(255,255,190,mouseY/2-30-100*cos(frameCount*0.01)); rect(45-mouseX*0.015,70,50-mouseX*0.015,75); rect(0-mouseX*0.045,90,5-mouseX*0.045, 95); rect(405-mouseX*0.045,5,410-mouseX*0.045,10); // Moon, position moves up and down based on mouse Y. Fades out as it reaches the bottom fill (255,240,240,mouseY-200); ellipse (160+mouseX/35,400-mouseY*0.90, 30,30); //Sun, position moves up and down based on mouse Y. Colour changes to red, and becomes less opaque when it reaches the bottom. fill (255,255-mouseY*0.5,190-mouseY*0.5,370-mouseY); ellipse (400-160-mouseX/35,41+mouseY*0.8, 30,30); //Cloud 1. Clouds fade out during night time fill(230,130-mouseY/2); beginShape(); vertex(150-mouseX*0.09,120); vertex(150-mouseX*0.09,110); vertex(160-mouseX*0.09,110); vertex(160-mouseX*0.09,100); vertex(170-mouseX*0.09,100); vertex(170-mouseX*0.09,90); vertex(250-mouseX*0.09,90); vertex(250-mouseX*0.09,100); vertex(280-mouseX*0.09,100); vertex(280-mouseX*0.09,110); vertex(300-mouseX*0.09,110); vertex(300-mouseX*0.09,120); endShape(); //Cloud 2 beginShape(); vertex(-10-mouseX*0.13,60); vertex(-10-mouseX*0.13,50); vertex(0-mouseX*0.13,50); vertex(0-mouseX*0.13,40); vertex(50-mouseX*0.13,40); vertex(50-mouseX*0.13,30); vertex(60-mouseX*0.13,30); vertex(60-mouseX*0.13,40); vertex(80-mouseX*0.13,40); vertex(80-mouseX*0.13,50); vertex(100-mouseX*0.13,50); vertex(100-mouseX*0.13,60); endShape(); //Moving cloud1 fill(230,130-mouseY/2); beginShape(); vertex(-100-mouseX*0.09+frameCount*0.05,100); vertex(-100-mouseX*0.09+frameCount*0.05,90); vertex(-90-mouseX*0.09+frameCount*0.05,90); vertex(-90-mouseX*0.09+frameCount*0.05,80); vertex(-80-mouseX*0.09+frameCount*0.05,80); vertex(-80-mouseX*0.09+frameCount*0.05,70); vertex(-30-mouseX*0.09+frameCount*0.05,70); vertex(-30-mouseX*0.09+frameCount*0.05,80); vertex(0-mouseX*0.09+frameCount*0.05,80); vertex(0-mouseX*0.09+frameCount*0.05,100); endShape(); //Moving cloud 2 fill(230,130-mouseY/2); beginShape(); vertex(300-mouseX*0.09+frameCount*0.05,60); vertex(300-mouseX*0.09+frameCount*0.05,50); vertex(310-mouseX*0.09+frameCount*0.05,50); vertex(310-mouseX*0.09+frameCount*0.05,40); vertex(320-mouseX*0.09+frameCount*0.05,40); vertex(320-mouseX*0.09+frameCount*0.05,30); vertex(350-mouseX*0.09+frameCount*0.05,30); vertex(350-mouseX*0.09+frameCount*0.05,40); vertex(380-mouseX*0.09+frameCount*0.05,40); vertex(380-mouseX*0.09+frameCount*0.05,50); vertex(400-mouseX*0.09+frameCount*0.05,50); vertex(400-mouseX*0.09+frameCount*0.05,60); endShape(); /////////////////// //////LAKES//////// /////////////////// //Three lake fills for each time of day, same theory as the sky colour. //Dusk Lake fill(219,105,153); rect(0,400,400,225); //Day Lake fill(108,220,237,350-mouseY*2); rect(0,400,400,225); //Night Lake fill(108,97,137,(mouseY)/1.5); rect(0,400,400,225); //////////////////////// ////////BRIDGE////////// //////////////////////// //Bridge tower supports, Right side //******HOW THE FILL IS CALCULATED*******// //The colour of every shape changes linearly during the night, but every R, G, and B value changes at different //rates. I manually calculated these rates of change using the following formula: // fill= (nightFill-dayFill)/400*mouseY+dayFill //This formula is applied to every R, G and B value. //See my process work for calculations. //The decimal values that you see throughout my code is just the calculated, simplified version of the formula. //Processing would glitch out if I tried to implement the formula without simplifying it first. rectMode(CORNERS); fill (-0.1775*mouseY+218,-0.11*mouseY+119,-0.1475*mouseY+127); rect(240-mouseX/16,400,250-mouseX/16,250); rect(270-mouseX/16,400,280-mouseX/16,250); // Left side rect(20-mouseX/16,400,30-mouseX/16,250); rect(50-mouseX/16,400,60-mouseX/16,250); //Vertical suspension lines // Object this far back have mouseX divided by 16, so it moves very slightly stroke(-0.1375*mouseY+152,-0.0725*mouseY+104,-0.1175*mouseY+116); strokeWeight(2); //Central section line (70-mouseX/16, 166, 70-mouseX/16, 240); line (90-mouseX/16, 195, 90-mouseX/16, 240); line (110-mouseX/16, 214, 110-mouseX/16, 240); line (130-mouseX/16, 225, 130-mouseX/16, 240); line (151-mouseX/16, 230, 151-mouseX/16, 240); line (170-mouseX/16, 225, 170-mouseX/16, 240); line (190-mouseX/16, 214, 190-mouseX/16, 240); line (210-mouseX/16, 195, 210-mouseX/16, 240); line (230-mouseX/16, 166, 230-mouseX/16, 240); //left section line (10-mouseX/16, 166, 10-mouseX/16, 240); //right secion line (290-mouseX/16, 166, 290-mouseX/16, 240); line (310-mouseX/16, 195, 310-mouseX/16, 240); line (330-mouseX/16, 214, 330-mouseX/16, 240); line (350-mouseX/16, 225, 350-mouseX/16, 240); line (370-mouseX/16, 230, 370-mouseX/16, 240); line (390-mouseX/16, 225, 390-mouseX/16, 240); line (410-mouseX/16, 214, 410-mouseX/16, 240); line (430-mouseX/16, 195, 430-mouseX/16, 240); //right arc suspension cables noFill(); stroke (-0.165*mouseY+188,-0.0875*mouseY+110,-0.135*mouseY+122); strokeWeight(3); arc(385-mouseX/16,35,255,395, radians(30), radians(150) ); arc(355-mouseX/16,35,255,395, radians(30), radians(150) ); noStroke(); // Right Tower, vertical blocks fill (-0.1775*mouseY+218,-0.11*mouseY+119,-0.1475*mouseY+127); rect(240-mouseX/16,250,250-mouseX/16,130); rect(270-mouseX/16,250,280-mouseX/16,130); // Right Tower, horizontal blocks, 7 thick rect (240-mouseX/16,145,280-mouseX/16, 138); rect (240-mouseX/16,170,280-mouseX/16, 163); rect (240-mouseX/16,195,280-mouseX/16, 188); rect (240-mouseX/16,220,280-mouseX/16, 213); //central arc suspension cables noFill(); stroke (-0.165*mouseY+188,-0.0875*mouseY+110,-0.135*mouseY+122); arc(135-mouseX/16,35,255,395, radians(30), radians(150) ); arc(165-mouseX/16,35,255,395, radians(30), radians(150) ); noStroke(); // Left Tower , vertical blocks fill (-0.1775*mouseY+218,-0.11*mouseY+119,-0.1475*mouseY+127); rect(20-mouseX/16,250,30-mouseX/16,130); rect(50-mouseX/16,250,60-mouseX/16,130); // Left Tower , horizontal blocks, 7 thick rect (20-mouseX/16,145,60-mouseX/16, 138); rect (20-mouseX/16,170,60-mouseX/16, 163); rect (20-mouseX/16,195,60-mouseX/16, 188); rect (20-mouseX/16,220,60-mouseX/16, 213); //left arc suspension cables noFill(); stroke (-0.165*mouseY+188,-0.0875*mouseY+110,-0.135*mouseY+122); arc(-85-mouseX/16,35,255,395, radians(30), radians(150) ); arc(-55-mouseX/16,35,255,395, radians(30), radians(150) ); noStroke(); //Bridge road fill (-0.155*mouseY+188,-0.08*mouseY+110,-0.1275*mouseY+122); rect (0,240, 400, 250); //Bridge Lights. They pulsate using sin(frameCount) to calculate size fill (255,222,189,(mouseY)/1.3-50-200*sin(frameCount*0.03)/2); ellipse ( 40-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 80-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 120-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 160-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 200-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 240-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 280-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 320-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 360-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 400-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); ellipse ( 440-mouseX/16, 230, 3-sin(frameCount*0.03)/2,3-sin(frameCount*0.03)/2); //////////////////////////// ///Mountainous Background/// //////////////////////////// //as objects get closer, the mouseX value is divided by less and less fill (-0.1525*mouseY+144,-0.225*mouseY+172,-0.2375*mouseY+168); beginShape(); vertex(0-mouseX/14,435); vertex(450-mouseX/14,430); vertex(450-mouseX/14,235); vertex(400-mouseX/14,230); vertex(400-mouseX/14,245); vertex(380-mouseX/14,245); vertex(380-mouseX/14,255); vertex(350-mouseX/14,255); vertex(350-mouseX/14,265); vertex(300-mouseX/14,265); vertex(300-mouseX/14,260); vertex(280-mouseX/14,260); vertex(280-mouseX/14,265); vertex(260-mouseX/14,265); vertex(260-mouseX/14,275); vertex(200-mouseX/14,275); vertex(200-mouseX/14,285); vertex(180-mouseX/14,285); vertex(180-mouseX/14,295); vertex(110-mouseX/14,295); vertex(110-mouseX/14,285); vertex(90-mouseX/14,285); vertex(90-mouseX/14,275); vertex(70-mouseX/14,275); vertex(70-mouseX/14,265); vertex(60-mouseX/14,265); vertex(60-mouseX/14,255); vertex(50-mouseX/14,255); vertex(50-mouseX/14,235); vertex(40-mouseX/14,235); vertex(40-mouseX/14,225); vertex(30-mouseX/14,225); vertex(30-mouseX/14,205); vertex(20-mouseX/14,205); vertex(20-mouseX/14,185); vertex(10-mouseX/14,185); vertex(10-mouseX/14,165); vertex(0-mouseX/14,165); endShape(); ///////////////////// //////Far City/////// ///////////////////// //Highway supports fill(-0.2125*mouseY+198,-0.295*mouseY+220,-0.305*mouseY+230); rect( 60-mouseX/14, 400, 65-mouseX/14, 266); rect( 85-mouseX/14, 400, 90-mouseX/14, 275); rect( 205-mouseX/14, 400, 210-mouseX/14, 298); rect( 230-mouseX/14, 400, 235-mouseX/14, 302); rect( 255-mouseX/14, 400, 260-mouseX/14, 306); rect( 295-mouseX/14, 400, 300-mouseX/14, 306); rect( 320-mouseX/14, 400, 325-mouseX/14, 302); rect( 345-mouseX/14, 400, 350-mouseX/14, 298); rect( 370-mouseX/14, 400, 375-mouseX/14, 290); // Rotated rectangle for highway from top left to center fill(-0.2125*mouseY+198,-0.295*mouseY+220,-0.305*mouseY+230); quad (40-mouseX/14,260,265-mouseX/14,300,265-mouseX/14,312,40-mouseX/14,272); quad (160-mouseX/14,325,380-mouseX/14,285,380-mouseX/14,297,160-mouseX/14,337); // Car lights, slowly move up the highway 1 (runs from right to left) [slope =0.177] // They move using framecount, multiplied by the slope // Cars are queued up off screen so that it appears to be a continuous stream of cars. // However, if you leave the program running for long enough, it will run out of cars. fill (250,100,100,(mouseY)/1.5); ellipse (500-mouseX/14-frameCount*0.05,345.41-frameCount*0.00885, 2.5,2.5); ellipse (450-mouseX/14-frameCount*0.05,336.56-frameCount*0.00885, 2.5,2.5); ellipse (420-mouseX/14-frameCount*0.05,331.25-frameCount*0.00885, 2.5,2.5); ellipse (395-mouseX/14-frameCount*0.05,326.83-frameCount*0.00885, 2.5,2.5); ellipse (375-mouseX/14-frameCount*0.05,323.29-frameCount*0.00885, 2.5,2.5); ellipse (320-mouseX/14-frameCount*0.05,313.56-frameCount*0.00885, 2.5,2.5); ellipse (280-mouseX/14-frameCount*0.05,306.48-frameCount*0.00885, 2.5,2.5); ellipse (250-mouseX/14-frameCount*0.05,301.17-frameCount*0.00885, 2.5,2.5); ellipse (230-mouseX/14-frameCount*0.05,297.63-frameCount*0.00885, 2.5,2.5); ellipse (190-mouseX/14-frameCount*0.05,290.55-frameCount*0.00885, 2.5,2.5); ellipse (130-mouseX/14-frameCount*0.05,279.93-frameCount*0.00885, 2.5,2.5); ellipse (100-mouseX/14-frameCount*0.05,274.62-frameCount*0.00885, 2.5,2.5); ellipse (70-mouseX/14-frameCount*0.05,269.31-frameCount*0.00885, 2.5,2.5); // Rotated rectangle for highway from bottom left to top right fill(-0.2125*mouseY+198,-0.295*mouseY+220,-0.305*mouseY+230); quad (160-mouseX/14,325,380-mouseX/14,285,380-mouseX/14,297,160-mouseX/14,337); //Highway cars, going other way, slope is just negative instead. fill (250,100,100,(mouseY)/1.5); ellipse (40-mouseX/14+frameCount*0.05,350.58-frameCount*0.00885, 2.5,2.5); ellipse (80-mouseX/14+frameCount*0.05,343.5-frameCount*0.00885, 2.5,2.5); ellipse (140-mouseX/14+frameCount*0.05,332.88-frameCount*0.00885, 2.5,2.5); ellipse (180-mouseX/14+frameCount*0.05,325.8-frameCount*0.00885, 2.5,2.5); ellipse (213-mouseX/14+frameCount*0.05,320-frameCount*0.00885, 2.5,2.5); ellipse (240-mouseX/14+frameCount*0.05,315.221-frameCount*0.00885, 2.5,2.5); ellipse (280-mouseX/14+frameCount*0.05,308.141-frameCount*0.00885, 2.5,2.5); ellipse (300-mouseX/14+frameCount*0.05,304.6-frameCount*0.00885, 2.5,2.5); ellipse (335-mouseX/14+frameCount*0.05,298.4-frameCount*0.00885, 2.5,2.5); ellipse (370-mouseX/14+frameCount*0.05,292.2-frameCount*0.00885, 2.5,2.5); //Far City Layer 1, buildings at the back fill(-0.2125*mouseY+198,-0.295*mouseY+220,-0.305*mouseY+230); rect(0-mouseX/12,400,45-mouseX/12,230); rect(0-mouseX/12,400,50-mouseX/12,300); triangle(45-mouseX/12,230,0-mouseX/12,270,22.5-mouseX/12,150); rect (0-mouseX/12,400,160-mouseX/12,295); rect (90-mouseX/12,400,170-mouseX/12,285); rect (85-mouseX/12,400,165-mouseX/12,290); rect (100-mouseX/12,400,180-mouseX/12,265); rect (110-mouseX/12,400,160-mouseX/12,195); rect (115-mouseX/12,400,155-mouseX/12,180); rect (155-mouseX/12,400,195-mouseX/12,275); rect (155-mouseX/12,400,200-mouseX/12,305); rect (200-mouseX/12,400,300-mouseX/12,340); rect (240-mouseX/12,400,300-mouseX/12,325); rect (260-mouseX/12,400,295-mouseX/12,315); rect (265-mouseX/12,400,290-mouseX/12,275); rect (340-mouseX/12,400,450-mouseX/12,315); rect (345-mouseX/12,400,450-mouseX/12,310); rect (380-mouseX/12,400,450-mouseX/12,260); triangle(380-mouseX/12,260,450-mouseX/12,260,435-mouseX/12,180); rect (375-mouseX/12,260,450-mouseX/12,270); rect (375-mouseX/12,280,450-mouseX/12,290); // Far city lights, faint lights fill (160,160,160,(mouseY)/1.3-120-200*sin(frameCount*0.03)/1.5); rectMode(CENTER); rect(146-mouseX/12, 205, 8,3); rect(150-mouseX/12, 265, 5,3); rect(126-mouseX/12, 225, 4,3); rect(140-mouseX/12, 284, 35,3); rect(146-mouseX/12, 205, 5,3); rect(175-mouseX/12, 295, 15,3); rect(174-mouseX/12, 316, 6,3); rect(149-mouseX/12, 305, 6,3); rect(253-mouseX/12, 339, 4,4); rect(214-mouseX/12, 352, 4,4); rect(281-mouseX/12, 285, 8,3); rect(276-mouseX/12, 325, 4,4); rect(274-mouseX/12, 312, 10,3); rect(37-mouseX/12, 238, 5,3); rect(35-mouseX/12, 268, 5,3); rectMode(CORNERS); ////////////////////////// ///BACKGROUND BUILDINGS/// ////////////////////////// //Background Road (for the streetcar). Slope: (340-365)/(325-180)= -0.172 fill (-0.17*mouseY+148,-0.17*mouseY+135,-0.19*mouseY+145); quad(180-mouseX/8,365,325-mouseX/8,340,325-mouseX/8,400,190-mouseX/8,400); //Streetcar Line stroke (125-0.17*mouseY); strokeWeight(1); line(180-mouseX/8,345,325-mouseX/8,320); line(185-mouseX/8+mouseX*0.5,361-0.172*mouseX*0.5,185-mouseX/8+mouseX*0.5,345.56-0.172*mouseX*0.5); //Streetcar //Not a shape, but instead a thick line. stroke(-0.1675*mouseY+166,-0.1325*mouseY+85,-0.085*mouseY+72); strokeCap(SQUARE); strokeWeight(10); line(180-mouseX/8+mouseX*0.5,361-0.172*mouseX*0.5,200-mouseX/8+mouseX*0.5,357.56-0.172*mouseX*0.5); strokeWeight(4); stroke(-0.1825*mouseY+216,-0.14*mouseY+177,-0.075*mouseY+128); line(178-mouseX/8+mouseX*0.5,355-0.172*mouseX*0.5,200-mouseX/8+mouseX*0.5,351.56-0.172*mouseX*0.5); noStroke(); strokeCap(ROUND); //streetcar backlight fill (250,100,100,(mouseY)/1.5); ellipse(180-mouseX/8+mouseX*0.5,361-0.172*mouseX*0.5,2,2); //Very subtle fog effect at night fill (212,151,102,(mouseY)/1.3-295); ellipse (width/2, 400, 500+100*sin(frameCount*0.005),500+100*sin(frameCount*0.005)); //Background buildings //Triangle building fill(-0.08*mouseY+200,-0.12*mouseY+205,-0.0925*mouseY+205); triangle(-25-mouseX/6,325,50-mouseX/6,325,12.5-mouseX/6,55); //White highlight fill (-0.09*mouseY+235,-0.1375*mouseY+235,-0.1075*mouseY+235); triangle(7.5-mouseX/6,245,20-mouseX/6,245,12.5-mouseX/6,55); //Roofed building //Lit fill fill(-0.18*mouseY+230,-0.25*mouseY+238,-0.265*mouseY+225); rect(95-mouseX/6,400,145-mouseX/6,260); //Shadow fill fill(-0.2*mouseY+220,-0.23*mouseY+214,-0.1875*mouseY+180); rect(145-mouseX/6,400,175-mouseX/6,260); //Lit roof fill fill(-0.0225*mouseY+99,-0.0875*mouseY+109,-0.1*mouseY+124); quad(85-mouseX/6,260,185-mouseX/6,260,160-mouseX/6,230,110-mouseX/6,230); //Shadow roof fill fill(-0.0225*mouseY+82,-0.0825*mouseY+92,-0.1025*mouseY+103); quad(150-mouseX/6,260,185-mouseX/6,260,160-mouseX/6,230,140-mouseX/6,230); //Windows //Transparent during the day rectMode(CENTER); fill (215,188,170,(mouseY)/1.3-50); rect(105-mouseX/6, 270, 6,10); rect(120-mouseX/6, 270, 6,10); rect(120-mouseX/6, 290, 6,10); rect(135-mouseX/6, 290, 6,10); rect(105-mouseX/6, 310, 6,10); rect(135-mouseX/6, 310, 6,10); rect(157-mouseX/6, 270, 3,10); rect(170-mouseX/6, 270, 3,10); rect(157-mouseX/6, 310, 3,10); rect(157-mouseX/6, 330, 3,10); rect(170-mouseX/6, 330, 3,10); rectMode(CORNERS); //Right skyscraper, lit areas fill(-0.1175*mouseY+201,-0.1875*mouseY+205,-0.17*mouseY+190); rect(355-mouseX/8,450,500-mouseX/8,325); rect(375-mouseX/8,450,450-mouseX/8,315); rect(385-mouseX/8,450,500-mouseX/8,290); rect(395-mouseX/8,450,440-mouseX/8,120); rect(400-mouseX/8,450,435-mouseX/8,90); rect(405-mouseX/8,450,430-mouseX/8,60); rect(414-mouseX/8,450,421-mouseX/8,10); // Shaded areas on tower fill(-0.0775*mouseY+170,-0.15*mouseY+176,-0.14*mouseY+166); rect(422-mouseX/8,325,440-mouseX/8,125); rect(435-mouseX/8,120,422-mouseX/8,95); rect(430-mouseX/8,90,422-mouseX/8,65); // Windows // Has 2 colours, so there are lines of stroke designation between the code stroke (215,188,136,(mouseY)/1.3-50); strokeCap(SQUARE); strokeWeight(1.5); stroke (250,246,243,(mouseY)/1.3-50); line(402-mouseX/8,100,418-mouseX/8,100); line(405-mouseX/8,120,412-mouseX/8,120); line(408-mouseX/8,80,412-mouseX/8,80); stroke (215,188,136,(mouseY)/1.3-50); line(398-mouseX/8,130,418-mouseX/8,130); line(398-mouseX/8,140,412-mouseX/8,140); line(410-mouseX/8,150,418-mouseX/8,150); line(398-mouseX/8,170,418-mouseX/8,170); line(412-mouseX/8,180,415-mouseX/8,180); stroke (250,246,243,(mouseY)/1.3-50); line(403-mouseX/8,190,413-mouseX/8,190); line(410-mouseX/8,200,418-mouseX/8,200); stroke (215,188,136,(mouseY)/1.3-50); line(398-mouseX/8,220,410-mouseX/8,220); line(398-mouseX/8,230,418-mouseX/8,230); line(400-mouseX/8,250,418-mouseX/8,250); line(398-mouseX/8,260,412-mouseX/8,260); line(400-mouseX/8,270,410-mouseX/8,270); stroke (250,246,243,(mouseY)/1.3-50); line(398-mouseX/8,290,418-mouseX/8,290); stroke (215,188,136,(mouseY)/1.3-50); line(398-mouseX/8,300,410-mouseX/8,300); line(388-mouseX/8,310,420-mouseX/8,310); line(378-mouseX/8,320,418-mouseX/8,320); stroke (250,246,243,(mouseY)/1.3-50); line(378-mouseX/8,330,415-mouseX/8,330); stroke (215,188,136,(mouseY)/1.3-50); line(388-mouseX/8,350,410-mouseX/8,350); noStroke(); //Black block building fill(-0.055*mouseY+94,-0.08*mouseY+94,-0.0675*mouseY+94); rect(305-mouseX/6,450,385-mouseX/6,170); rect(318-mouseX/6,450,372-mouseX/6,160); //Windows stroke (215,188,136,(mouseY)/1.3-50); strokeCap(SQUARE); strokeWeight(1.5); line (325-mouseX/6,240, 335-mouseX/6, 240); line (315-mouseX/6,230, 335-mouseX/6, 230); stroke (250,246,243,(mouseY)/1.3-50); line (315-mouseX/6,210, 320-mouseX/6, 210); stroke (215,188,136,(mouseY)/1.3-50); line (320-mouseX/6,180, 335-mouseX/6, 180); stroke (250,246,243,(mouseY)/1.3-50); line (315-mouseX/6,280, 340-mouseX/6, 280); stroke (215,188,136,(mouseY)/1.3-50); line (350-mouseX/6,280, 360-mouseX/6, 280); line (360-mouseX/6,300, 380-mouseX/6, 300); line (340-mouseX/6,300, 355-mouseX/6, 300); stroke (250,246,243,(mouseY)/1.3-50); line (360-mouseX/6,310, 370-mouseX/6, 310); stroke (215,188,136,(mouseY)/1.3-50); line (330-mouseX/6,330, 345-mouseX/6, 330); line (320-mouseX/6,340, 350-mouseX/6, 340); line (340-mouseX/6,350, 365-mouseX/6, 350); line (320-mouseX/6,310, 340-mouseX/6, 310); strokeCap(ROUND); noStroke(); //Lighter highlight fill(-0.07*mouseY+112,-0.0925*mouseY+108,-0.0675*mouseY+109); rect(340-mouseX/6,260,385-mouseX/6,170); //brown block buildings fill(-0.155*mouseY+161,-0.0875*mouseY+105,-0.04*mouseY+97); rect (0-mouseX/4,400,80-mouseX/4,320); rect (80-mouseX/4,335,235-mouseX/4,330); rect (360-mouseX/4, 345, 450-mouseX/4, 350); rect (200-mouseX/4,365,360-mouseX/4,370); //darker coloured fill(-0.21*mouseY+144,-0.1475*mouseY+97,-0.1175*mouseY+90); rect (80-mouseX/4,400,185-mouseX/4,315); rect (80-mouseX/4,400,235-mouseX/4,335); rect (360-mouseX/4, 400, 450-mouseX/4, 350); rect (200-mouseX/4,400,360-mouseX/4,370); //Trees //Trunk stroke (-0.225*mouseY+179,-0.2325*mouseY+167,-0.2325*mouseY+161); //Main trunk strokeWeight(5); line (185-mouseX/4,360, 185-mouseX/4, 400); line (135-mouseX/4,355, 135-mouseX/4, 400); line (85-mouseX/4,355, 85-mouseX/4, 400); line (235-mouseX/4,350, 235-mouseX/4, 400); line (285-mouseX/4,355, 285-mouseX/4, 400); line (335-mouseX/4,360, 335-mouseX/4, 400); line (385-mouseX/4,350, 385-mouseX/4, 400); line (435-mouseX/4,360, 435-mouseX/4, 400); //Smaller branches strokeWeight(2); line (175-mouseX/4,360, 185-mouseX/4, 385); line (195-mouseX/4,360, 185-mouseX/4, 385); line (125-mouseX/4,355, 135-mouseX/4, 380); line (145-mouseX/4,355, 135-mouseX/4, 380); line (75-mouseX/4,360, 85-mouseX/4, 385); line (95-mouseX/4,360, 85-mouseX/4, 385); line (225-mouseX/4,350, 235-mouseX/4, 375); line (245-mouseX/4,350, 235-mouseX/4, 375); line (275-mouseX/4,355, 285-mouseX/4, 380); line (295-mouseX/4,355, 285-mouseX/4, 380); line (325-mouseX/4,360, 335-mouseX/4, 385); line (345-mouseX/4,360, 335-mouseX/4, 385); line (375-mouseX/4,350, 385-mouseX/4, 375); line (395-mouseX/4,350, 385-mouseX/4, 375); line (425-mouseX/4,360, 435-mouseX/4, 385); line (445-mouseX/4,360, 435-mouseX/4, 385); noStroke(); //Leaves rectMode(CENTER); fill (-0.13*mouseY+113,-0.235*mouseY+152,-0.13*mouseY+89); rect (185-mouseX/4, 360, 25,25); rect (185-mouseX/4, 360, 35,15); rect (135-mouseX/4, 355, 25,25); rect (135-mouseX/4, 355, 35,15); rect (85-mouseX/4, 360, 25,25); rect (85-mouseX/4, 360, 35,15); rect (235-mouseX/4,350, 25,25); rect (235-mouseX/4,350, 35,15); rect (285-mouseX/4,355, 25,25); rect (285-mouseX/4,355, 35,15); rect (335-mouseX/4,360, 25,25); rect (335-mouseX/4,360, 35,15); rect (385-mouseX/4,350, 25,25); rect (385-mouseX/4,350, 35,15); rect (435-mouseX/4,360, 25,25); rect (435-mouseX/4,360, 35,15); rectMode(CORNERS); ////////////////////// ////Midground city//// ////////////////////// //Lady building left fill (-0.08*mouseY+168,-0.1325*mouseY+191,-0.1475*mouseY+195); rect (0-mouseX/2,400, 80-mouseX/2, 270); //Windows //Light grey fill (0.0775*mouseY+215,0.0475*mouseY+201,189); rect (0-mouseX/2, 400, 40-mouseX/2, 270); rect (55-mouseX/2, 275, 75-mouseX/2, 305); //Dark grey fill(0.1625*mouseY+181,0.13*mouseY+168,0.07*mouseY+159); rect (30-mouseX/2,400, 40-mouseX/2, 270); rect (55-mouseX/2, 320, 75-mouseX/2, 355); //Roof fill(-0.0575*mouseY+94,-0.0225*mouseY+63,52); quad(-5-mouseX/2,265, 85-mouseX/2, 265, 65-mouseX/2, 235, 15-mouseX/2, 235); //White outlines stroke (-0.095*mouseY+245,-0.14*mouseY+225,-0.0725*mouseY+196); strokeWeight(3); noFill(); //Upper right window rect (55-mouseX/2, 275, 75-mouseX/2, 305); line (60-mouseX/2, 275, 60-mouseX/2, 305); line (65-mouseX/2, 275, 65-mouseX/2, 305); line (70-mouseX/2, 275, 70-mouseX/2, 305); //mini rectangle accent fill(163,141,141); rect (55-mouseX/2, 300, 75-mouseX/2, 305); noFill(); //Lower right window rect (55-mouseX/2, 320, 75-mouseX/2, 355); rect (55-mouseX/2, 335, 75-mouseX/2, 344); line (60-mouseX/2, 335, 60-mouseX/2, 355); line (70-mouseX/2, 335, 70-mouseX/2, 355); //Left window frame line (0-mouseX/2,270,0-mouseX/2,360); line (10-mouseX/2,270,10-mouseX/2,360); line (30-mouseX/2,270,30-mouseX/2,360); line (40-mouseX/2,270,40-mouseX/2,360); beginShape(); vertex (40-mouseX/2,306); vertex (30-mouseX/2,311); vertex (10-mouseX/2,311); vertex (0-mouseX/2,306); endShape (); beginShape(); vertex (40-mouseX/2,314); vertex (30-mouseX/2,319); vertex (10-mouseX/2,319); vertex (0-mouseX/2,314); endShape (); //Lower left Window fill noStroke(); fill(-0.1325*mouseY+198,-0.1325*mouseY+165,-0.0675*mouseY+141); beginShape(); vertex (42-mouseX/2,360); vertex (42-mouseX/2,340); vertex (30-mouseX/2,345); vertex (10-mouseX/2,345); vertex (0-mouseX/2,340); vertex (0-mouseX/2,360); endShape (); //Upper Left Window fill beginShape(); vertex (42-mouseX/2,275); vertex (30-mouseX/2,280); vertex (10-mouseX/2,280); vertex (0-mouseX/2,275); vertex (0-mouseX/2,270); vertex (42-mouseX/2,270); vertex (42-mouseX/2,275); endShape(); noStroke(); //Blue outlining near roof fill (-0.06*mouseY+99,-0.13*mouseY+131,-0.1475*mouseY+134); rect (0-mouseX/2,265, 80-mouseX/2, 270); //Outlining in the center, from right to left noFill(); stroke (-0.1325*mouseY+198,-0.1325*mouseY+165,-0.0675*mouseY+141); strokeWeight (4); beginShape(); vertex (80-mouseX/2,310); vertex (40-mouseX/2,310); vertex (30-mouseX/2,315); vertex (10-mouseX/2,315); vertex (0-mouseX/2,310); vertex (-2-mouseX/2,310); endShape (); noStroke(); //Accents //Dark blue fill(-0.06*mouseY+99,-0.13*mouseY+131,-0.1475*mouseY+134); rect(42-mouseX/2,345, 100-mouseX/2, 370); //Dark grey stairs fill(-0.0675*mouseY+86,-0.07*mouseY+73,-0.0925*mouseY+65); rect(42-mouseX/2,345, 54-mouseX/2, 347); rect(41-mouseX/2,348, 55-mouseX/2, 350); rect(40-mouseX/2,351, 56-mouseX/2, 353); rect(39-mouseX/2,354, 57-mouseX/2, 356); //Lady building right fill (-0.025*mouseY+163,-0.11*mouseY+188,-0.0575*mouseY+142); rect (120-mouseX/2,400, 200-mouseX/2,290); //Windows //Light grey fill (0.0775*mouseY+215,0.0475*mouseY+201,189); rect (120-mouseX/2,400, 160-mouseX/2, 290); rect (175-mouseX/2, 295, 195-mouseX/2, 325); //Dark grey fill(0.1625*mouseY+181,0.13*mouseY+168,0.07*mouseY+159); rect (150-mouseX/2,400, 160-mouseX/2, 290); rect (175-mouseX/2, 340, 195-mouseX/2, 375); //Roof fill(-0.04*mouseY+94,-0.0125*mouseY+52,0.0175*mouseY+56); quad(115-mouseX/2,285, 205-mouseX/2, 285, 185-mouseX/2, 255, 135-mouseX/2, 255); //White outlines stroke (-0.095*mouseY+245,-0.14*mouseY+225,-0.0725*mouseY+196); strokeWeight(3); noFill(); //Upper right window rect (175-mouseX/2, 295, 195-mouseX/2, 325); line (180-mouseX/2, 295, 180-mouseX/2, 325); line (185-mouseX/2, 295, 185-mouseX/2, 325); line (190-mouseX/2, 295, 190-mouseX/2, 325); //mini rectangle accent fill(181,168,159); rect (175-mouseX/2, 320, 195-mouseX/2, 325); noFill(); //Lower right window rect (175-mouseX/2, 340, 195-mouseX/2, 375); rect (175-mouseX/2, 355, 195-mouseX/2, 364); line (180-mouseX/2, 355, 180-mouseX/2, 375); line (190-mouseX/2, 355, 190-mouseX/2, 375); //Left window frame line (120-mouseX/2,290,120-mouseX/2,380); line (130-mouseX/2,290,130-mouseX/2,380); line (150-mouseX/2,290,150-mouseX/2,380); line (160-mouseX/2,290,160-mouseX/2,380); beginShape(); vertex (160-mouseX/2,326); vertex (150-mouseX/2,331); vertex (130-mouseX/2,331); vertex (120-mouseX/2,326); endShape (); beginShape(); vertex (160-mouseX/2,334); vertex (150-mouseX/2,339); vertex (130-mouseX/2,339); vertex (120-mouseX/2,334); endShape (); //Lower left Window fill noStroke(); fill(-0.095*mouseY+245,-0.14*mouseY+225,-0.0725*mouseY+196); beginShape(); vertex (160-mouseX/2,380); vertex (160-mouseX/2,360); vertex (150-mouseX/2,365); vertex (130-mouseX/2,365); vertex (120-mouseX/2,360); vertex (120-mouseX/2,380); endShape (); //Upper Left Window fill noStroke(); beginShape(); vertex (160-mouseX/2,295); vertex (150-mouseX/2,300); vertex (130-mouseX/2,300); vertex (120-mouseX/2,295); vertex (120-mouseX/2,290); vertex (160-mouseX/2,290); vertex (160-mouseX/2,295); endShape(); noStroke(); //Red outlining fill (-0.1125*mouseY+127,-0.0225*mouseY+29,0.06*mouseY+25); rect (120-mouseX/2,285, 200-mouseX/2, 290); //Outlining in the center, from right to left noFill(); stroke (-0.1125*mouseY+127,-0.0225*mouseY+29,0.06*mouseY+25); strokeWeight (4); beginShape(); vertex (200-mouseX/2,330); vertex (160-mouseX/2,330); vertex (150-mouseX/2,335); vertex (130-mouseX/2,335); vertex (120-mouseX/2,330); vertex (118-mouseX/2,330); endShape (); noStroke(); //Accents //Dark green fill(-0.0725*mouseY+103,-0.145*mouseY+127,-0.0975*mouseY+85); rect(162-mouseX/2,365, 220-mouseX/2, 390); //Dark grey stairs fill(-0.0675*mouseY+86,-0.07*mouseY+73,-0.0925*mouseY+65); rect(162-mouseX/2,365, 174-mouseX/2, 367); rect(161-mouseX/2,368, 175-mouseX/2, 370); rect(160-mouseX/2,371, 176-mouseX/2, 373); rect(159-mouseX/2,374, 177-mouseX/2, 376); //Streetlamp poles fill(-0.295*mouseY+170,-0.295*mouseY+168,-0.3125*mouseY+180); rect (235-mouseX/2, 395, 240-mouseX/2, 280); rect (100-mouseX/2, 395, 105-mouseX/2, 263.33); rect (370-mouseX/2, 400, 375-mouseX/2, 296.67); rect (505-mouseX/2, 395, 510-mouseX/2, 313.34); //Midground street fill (-0.2075*mouseY+177,-0.2075*mouseY+166,-0.25*mouseY+184); triangle(0-mouseX/2,350,345-mouseX/2,400,0-mouseX/2,400); //Streetlamp light fill (250,230,150,(mouseY)/2-135); triangle (242.5-mouseX/2, 280, 262.5-pmouseX/2,400,222.5-pmouseX/2,400); triangle (107.5-mouseX/2, 263.33, 127.5-pmouseX/2,400,87.5-pmouseX/2,400); triangle (377.5-mouseX/2, 296.67, 397.5-pmouseX/2,400,357.5-pmouseX/2,400); triangle (512.5-mouseX/2, 313.34, 532.5-pmouseX/2,400,492.5-pmouseX/2,400); //Streetlamp head fill(-0.295*mouseY+170,-0.295*mouseY+168,-0.3125*mouseY+180); rect (235-mouseX/2, 280, 250-mouseX/2, 290); rect (100-mouseX/2, 263.33, 115-mouseX/2, 273.33); rect (370-mouseX/2, 296.67, 385-mouseX/2, 306.67); rect (505-mouseX/2, 313.34, 520-mouseX/2, 323.34); //Invisible midground street, to block the streetlight beams fill (-0.2075*mouseY+177,-0.2075*mouseY+166,-0.25*mouseY+184); triangle(0-mouseX/2,355,345-mouseX/2,405,0-mouseX/2,405); //Darker midground street fill (-0.1975*mouseY+110,-0.18*mouseY+103,-0.21*mouseY+115); triangle(0-mouseX/2,371,210-mouseX/2,400,0-mouseX/2,400); //////////////////////// ////Foreground Fence//// //////////////////////// noFill(); stroke (-0.0675*mouseY+49,-0.075*mouseY+46,-0.0925*mouseY+51); //Spokes strokeWeight(2.5); line (10-mouseX,400,10-mouseX,355); line (30-mouseX,400,30-mouseX,355); line (50-mouseX,400,50-mouseX,355); line (70-mouseX,400,70-mouseX,355); line (90-mouseX,400,90-mouseX,355); line (110-mouseX,400,110-mouseX,355); line (130-mouseX,400,130-mouseX,355); line (150-mouseX,400,150-mouseX,355); line (170-mouseX,400,170-mouseX,355); line (190-mouseX,400,190-mouseX,355); line (210-mouseX,400,210-mouseX,355); //Bolded Spokes strokeWeight(5); line (10-mouseX,400,10-mouseX,350); line (110-mouseX,400,110-mouseX,350); line (210-mouseX,400,210-mouseX,350); //Railing line (0-mouseX,355, 210-mouseX, 355); noStroke(); fill (-0.0675*mouseY+49,-0.075*mouseY+46,-0.0925*mouseY+51); ellipse (10.5-mouseX,345, 10,10); ellipse (110.5-mouseX,345, 10,10); ellipse (210.5-mouseX,345, 10,10); /////////////////////// ///////Downtown//////// /////////////////////// //Building fill(0.0675*mouseY+84,-0.0575*mouseY+84,-0.0625*mouseY+91); rect (550-mouseX/1.5,400, 670-mouseX/1.5, 280); //Windows fill(0.34*mouseY+110,0.275*mouseY+110,0.1575*mouseY+124); rect (560-mouseX/1.5,300, 580-mouseX/1.5, 325); rect (595-mouseX/1.5,300, 615-mouseX/1.5, 325); rect (630-mouseX/1.5,335, 650-mouseX/1.5, 360); //Window dark fill fill(0.04*mouseY+67,-0.04*mouseY+67,-0.055*mouseY+74); rect (560-mouseX/1.5,320, 580-mouseX/1.5, 325); rect (595-mouseX/1.5,320, 615-mouseX/1.5, 325); rect (630-mouseX/1.5,355, 650-mouseX/1.5, 360); //Roof rim fill(-0.065*mouseY+150,-0.1775*mouseY+150,-0.21*mouseY+162); rect (548-mouseX/1.5,280, 670-mouseX/1.5, 273); //Street blocks fill(0.0075*mouseY+172,-0.0875*mouseY+165,-0.09*mouseY+143); rect (540-mouseX/1.5,400, 600-mouseX/1.5, 375); rect (640-mouseX/1.5,400, 700-mouseX/1.5, 365); //Lantern decorations //Line where they hang from stroke (79,52,43); noFill(); strokeWeight(1.5); arc (610-mouseX/1.5,210,250,250,radians(0), radians (115) ); noStroke(); //Lanterns fill(0.1825*mouseY+182,-0.2625*mouseY+222,-0.145*mouseY+170); ellipse (565-pmouseX/1.5,332 , 13,10); fill(0.265*mouseY+149,0.145*mouseY+59,0.13*mouseY+60); ellipse (585-pmouseX/1.5,338 , 13,10); fill(0.07*mouseY+227,-0.2775*mouseY+228,-0.2125*mouseY+197); ellipse (605-pmouseX/1.5,341 , 13,10); fill(0.215*mouseY+169,-0.0975*mouseY+156,-0.225*mouseY+202); ellipse (627-pmouseX/1.5,340 , 13,10); fill(255,-0.2425*mouseY+214,-0.2325*mouseY+205); ellipse (649-pmouseX/1.5,336 , 13,10); //Lower right lanterns fill(0.265*mouseY+149,0.145*mouseY+59,0.13*mouseY+60); ellipse (620-pmouseX/1.5,365 , 8,6); ellipse (630-pmouseX/1.5,365 , 8,6); ellipse (640-pmouseX/1.5,365 , 8,6); ellipse (650-pmouseX/1.5,365 , 8,6); ellipse (660-pmouseX/1.5,365 , 8,6); //Chinatown Gate //Supports fill (-0.1025*mouseY+183,-0.2175*mouseY+192,-0.24*mouseY+196); //Left Supports rect (475-mouseX/1.5,400, 480-mouseX/1.5,360); rect (500-mouseX/1.5,400, 505-mouseX/1.5,360); //Right Supports rect (550-mouseX/1.5,400, 555-mouseX/1.5,360); rect (575-mouseX/1.5,400, 580-mouseX/1.5,360); //Central Supports rect (500-mouseX/1.5,400, 505-mouseX/1.5,340); rect (550-mouseX/1.5,400, 555-mouseX/1.5,340); //Horizontal Supports rect (475-mouseX/1.5,365, 505-mouseX/1.5, 368); rect (550-mouseX/1.5,365, 580-mouseX/1.5, 368); //Wooden detail fill (-0.0325*mouseY+79,-0.03*mouseY+49,0.02*mouseY+45); rect (474-mouseX/1.5,360, 506-mouseX/1.5, 363); rect (549-mouseX/1.5,360, 581-mouseX/1.5, 363); rect (495-mouseX/1.5,340, 560-mouseX/1.5, 343); //Sign rect (520-mouseX/1.5,345, 534-mouseX/1.5, 350); fill(-0.06*mouseY+99,-0.13*mouseY+131,-0.1475*mouseY+134); rect (522-mouseX/1.5,346, 532-mouseX/1.5, 349); //Highlight //Central Gate fill (0.1125*mouseY+112,-0.185*mouseY+196,-0.2275*mouseY+179); quad (500-mouseX/1.5,320,555-mouseX/1.5,320, 565-mouseX/1.5, 340, 490-mouseX/1.5,340); //Left Gate quad (480-mouseX/1.5,345,500-mouseX/1.5,345, 510-mouseX/1.5, 360, 470-mouseX/1.5,360); //Right Gate quad (555-mouseX/1.5,345,575-mouseX/1.5,345, 585-mouseX/1.5, 360, 545-mouseX/1.5,360); //Downtown Street fill (-0.1225*mouseY+137,-0.17*mouseY+126,-0.1975*mouseY+144); rect (460-mouseX/1.5,390,700-mouseX/1.5,400); triangle (461-mouseX/1.5,390,461-mouseX/1.5,400,430-mouseX/1.5,400); ////MOUSE POSITION AID//// /* I used this to help me figure out where my pointer is, in relation to each layer. fill (0); text(" x: "+(mouseX+mouseX/14)+" y: "+mouseY+" X is /14", 10, 15); text(" day:"+(350-mouseY*2), 10 ,30); text(" night:"+((mouseY)/1.3-50), 70 ,30); text(" R:"+(0.1775*mouseY+147),10,45); */ /////////////////////// /////Custom cursor///// /////////////////////// //Changes colour based on time of day fill(-155+mouseY*1.5,-155+mouseY*1.5,-155+mouseY*1.5); stroke(-155+mouseY*1.5,-155+mouseY*1.5,-155+mouseY*1.5); strokeWeight(1.5); triangle (mouseX-3,mouseY-5,mouseX+3,mouseY+1,mouseX-2,mouseY+4); noStroke(); } //Mouse click function, shows the title void mousePressed (){ //I'm sorry.. I cheated and used variables to load a font! Sorry! It's a very minor element though. PFont font; PFont font2; font = loadFont ("MicrosoftYaHeiLight-48.vlw"); font2 = loadFont ("MicrosoftPhagsPa-48.vlw"); //Lower framerate so we see the title for longer frameRate(0.7); fill(255, 180); rectMode(CENTER); rect (width/2, height/2, width*0.7, height*0.35, 5); fill (0); textFont (font, 38); text ("san francisco", 90, height/2-10); textFont (font2, 16); text ("by william lu", 155, height/2+20); text ("for ann", 170, height/2+40); textSize (10); rectMode(CORNERS); }