Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
void setup(){
  size (800,600);
  noCursor();//for custom cursor
}

void draw(){
  background (0);
  
  
  //CAVE BACK WALL
  colorMode(RGB);
  fill(25,17,2);
  noStroke();
  //get rectangles out of the way
  rectMode(CORNERS); //first coord, opposite coord
  rect(-1600+(mouseX-400),-1600+(mouseY-300),0+(mouseX-400),1600+(mouseY-300));
  rect(620+(mouseX-400),-800+(mouseY-300),1600+(mouseX-400),1600+(mouseY-300));
  rect(-1600+(mouseX-400),-1600+(mouseY-300),1600+(mouseX-400),0+(mouseY-300));
  rect(-1600+(mouseX-400),520+(mouseY-300),1600+(mouseX-400),1600+(mouseY-300));
  rect(180+(mouseX-400),-1600+(mouseY-300),520+(mouseX-400),1600+(mouseY-300));
  rect(520+(mouseX-400),280+(mouseY-300),620+(mouseX-400),520+(mouseY-300));
  rect(520+(mouseX-400),-20+(mouseY-300),560+(mouseX-400),80+(mouseY-300));
  rect(0+(mouseX-400),500+(mouseY-300),40+(mouseX-400),520+(mouseY-300));
  rect(0+(mouseX-400),160+(mouseY-300),40+(mouseX-400),220+(mouseY-300));
  rect(0+(mouseX-400),120+(mouseY-300),180+(mouseX-400),160+(mouseY-300));
  rect(-80+(mouseX-400),-80+(mouseY-300),200+(mouseX-400),120+(mouseY-300));
  
  //ellipses, cause theres only two
  ellipseMode(RADIUS);
  ellipse(100+(mouseX-400),520+(mouseY-300),20,20);
  ellipse(620+(mouseX-400),180+(mouseY-300),20,40);
  
  //not a fan of triangles, they have too many angles to type.
  //hole 1
  triangle(80+(mouseX-400),120+(mouseY-300),180+(mouseX-400),120+(mouseY-300),180+(mouseX-400),220+(mouseY-300));
  triangle(80+(mouseX-400),160+(mouseY-300),40+(mouseX-400),160+(mouseY-300),40+(mouseX-400),220+(mouseY-300));
  triangle(40+(mouseX-400),220+(mouseY-300),0+(mouseX-400),220+(mouseY-300),0+(mouseX-400),380+(mouseY-300));
  triangle(0+(mouseX-400),400+(mouseY-300),0+(mouseX-400),500+(mouseY-300),40+(mouseX-400),500+(mouseY-300));
  triangle(40+(mouseX-400),500+(mouseY-300),40+(mouseX-400),520+(mouseY-300),100+(mouseX-400),520+(mouseY-300));
  triangle(120+(mouseX-400),520+(mouseY-300),180+(mouseX-400),520+(mouseY-300),180+(mouseX-400),220+(mouseY-300));
  //hole 2
  triangle(560+(mouseX-400),-20+(mouseY-300),580+(mouseX-400),-20+(mouseY-300),560+(mouseX-400),80+(mouseY-300));
  triangle(580+(mouseX-400),-20+(mouseY-300),620+(mouseX-400),-20+(mouseY-300),620+(mouseX-400),80+(mouseY-300));
  triangle(560+(mouseX-400),80+(mouseY-300),520+(mouseX-400),80+(mouseY-300),520+(mouseX-400),120+(mouseY-300));
  triangle(560+(mouseX-400),160+(mouseY-300),520+(mouseX-400),200+(mouseY-300),580+(mouseX-400),280+(mouseY-300));
  triangle(520+(mouseX-400),200+(mouseY-300),580+(mouseX-400),280+(mouseY-300),520+(mouseX-400),280+(mouseY-300));
  triangle(580+(mouseX-400),280+(mouseY-300),620+(mouseX-400),200+(mouseY-300),620+(mouseX-400),200+(mouseY-300)); // WHY IS THIS TRIANGLE NOT RENDERING
  
  
  //CHOZO RUINS
  fill(90,70,10);
  //nice, rectangular structure
  stroke(0);
  rectMode(CORNERS); //first coord, opposite coord
  rect(200+((mouseX-400)*0.5),140+((mouseY-300)*0.5),620+((mouseX-400)*0.5),800+((mouseY-300))*0.5);
  rect(200+((mouseX-400)*0.5),140+((mouseY-300)*0.5),260+((mouseX-400)*0.5),200+((mouseY-300))*0.5);
  rect(560+((mouseX-400)*0.5),140+((mouseY-300)*0.5),620+((mouseX-400)*0.5),200+((mouseY-300))*0.5);
  rect(200+((mouseX-400)*0.5),500+((mouseY-300)*0.5),260+((mouseX-400)*0.5),560+((mouseY-300))*0.5);
  rect(0+((mouseX-400)*0.5),500+((mouseY-300)*0.5),200+((mouseX-400)*0.5),800+((mouseY-300))*0.5);
  rect(0+((mouseX-400)*0.5),500+((mouseY-300)*0.5),60+((mouseX-400)*0.5),560+((mouseY-300))*0.5);
  
  //random bricks, so its not so bland
  rect(200+((mouseX-400)*0.5),300+((mouseY-300)*0.5),240+((mouseX-400)*0.5),320+((mouseY-300))*0.5);
  rect(220+((mouseX-400)*0.5),280+((mouseY-300)*0.5),260+((mouseX-400)*0.5),300+((mouseY-300))*0.5);
  rect(240+((mouseX-400)*0.5),300+((mouseY-300)*0.5),280+((mouseX-400)*0.5),320+((mouseY-300))*0.5);
  rect(200+((mouseX-400)*0.5),280+((mouseY-300)*0.5),220+((mouseX-400)*0.5),300+((mouseY-300))*0.5);
  rect(580+((mouseX-400)*0.5),460+((mouseY-300)*0.5),620+((mouseX-400)*0.5),480+((mouseY-300))*0.5);
  rect(580+((mouseX-400)*0.5),420+((mouseY-300)*0.5),620+((mouseX-400)*0.5),440+((mouseY-300))*0.5);
  rect(560+((mouseX-400)*0.5),440+((mouseY-300)*0.5),600+((mouseX-400)*0.5),460+((mouseY-300))*0.5);
  rect(340+((mouseX-400)*0.5),320+((mouseY-300)*0.5),380+((mouseX-400)*0.5),340+((mouseY-300))*0.5);
  rect(380+((mouseX-400)*0.5),320+((mouseY-300)*0.5),420+((mouseX-400)*0.5),340+((mouseY-300))*0.5);
  rect(360+((mouseX-400)*0.5),340+((mouseY-300)*0.5),400+((mouseX-400)*0.5),360+((mouseY-300))*0.5);
  rect(340+((mouseX-400)*0.5),360+((mouseY-300)*0.5),380+((mouseX-400)*0.5),380+((mouseY-300))*0.5);
  rect(380+((mouseX-400)*0.5),360+((mouseY-300)*0.5),420+((mouseX-400)*0.5),380+((mouseY-300))*0.5);
  rect(200+((mouseX-400)*0.5),600+((mouseY-300)*0.5),240+((mouseX-400)*0.5),620+((mouseY-300))*0.5);
  rect(240+((mouseX-400)*0.5),600+((mouseY-300)*0.5),280+((mouseX-400)*0.5),620+((mouseY-300))*0.5);
  rect(280+((mouseX-400)*0.5),600+((mouseY-300)*0.5),320+((mouseX-400)*0.5),620+((mouseY-300))*0.5);
  rect(220+((mouseX-400)*0.5),620+((mouseY-300)*0.5),260+((mouseX-400)*0.5),640+((mouseY-300))*0.5);
  rect(260+((mouseX-400)*0.5),580+((mouseY-300)*0.5),300+((mouseX-400)*0.5),600+((mouseY-300))*0.5);
  rect(400+((mouseX-400)*0.5),140+((mouseY-300)*0.5),440+((mouseX-400)*0.5),160+((mouseY-300))*0.5);
  rect(440+((mouseX-400)*0.5),140+((mouseY-300)*0.5),480+((mouseX-400)*0.5),160+((mouseY-300))*0.5);
  rect(20+((mouseX-400)*0.5),600+((mouseY-300)*0.5),60+((mouseX-400)*0.5),620+((mouseY-300))*0.5);
  rect(40+((mouseX-400)*0.5),620+((mouseY-300)*0.5),80+((mouseX-400)*0.5),640+((mouseY-300))*0.5);
  rect(60+((mouseX-400)*0.5),600+((mouseY-300)*0.5),100+((mouseX-400)*0.5),620+((mouseY-300))*0.5);
  
  
  //CAVE ENTRANCE
  colorMode(RGB);
  fill(50,35,5);
  noStroke();
  //Rectangles first
  rectMode(CORNER); //note: first 2 floats are starting co-ords, everything from there adds or subtracts rather than acts as co-ord
  rect(0,0,240,100);
  rect(240,0,60,180);
  rect(0,100,140,120);
  rect(0,220,100,120);
  rect(420,0,60,80);
  rect(520,0,280,140);
  rect(580,140,220,40);
  rect(640,180,160,20);
  rect(660,200,40,60);
  rect(700,200,100,200);
  rect(640,260,160,340);
  rect(0,560,400,40);
  rect(400,540,180,60);
  rect(580,520,80,80);
  rect(420,420,20,120);
  
  rect(0,-50,-400,700);//backup left wall
  rect(-400,-50,1600,50);//backup ceiling
  rect(800,-50,400,700);//backup right wall
  rect(-400,600,1600,50);//backup floor
  
  //theres only one ellipse so do it here
  ellipseMode(RADIUS);
  ellipse(100,260,20,20);
  
  //ugh triangles
  triangle(140,100,180,100,140,140);
  triangle(100,220,140,220,100,260);
  triangle(100,260,100,300,120,300);
  triangle(0,340,80,340,0,540);
  triangle(0,380,0,560,120,560);
  triangle(220,100,260,100,260,240);
  triangle(260,180,280,180,260,240);
  triangle(300,0,440,0,300,160);
  triangle(360,20,420,20,420,80);
  triangle(480,0,480,120,600,0);
  triangle(520,140,580,140,580,180);
  triangle(580,180,640,180,640,200);
  triangle(640,200,660,200,660,240);
  triangle(700,240,700,360,560,360);
  triangle(560,360,640,360,640,420);
  triangle(640,460,640,520,600,520);
  triangle(445,380,445,540,400,540);
  triangle(445,500,445,540,460,540);
  
  //SAMUS
  //while the left mouse button is pressed, Samus' colours will change from the orange Varia Suit to the purple Gravity Suit
  stroke(0);
  colorMode(RGB);
  rectMode(CORNERS);
  fill(0,255,0+(255*mouseButton));
  ellipse(255,515,40,40);
  fill(205,125-(120*mouseButton),0+(75*mouseButton));
  ellipse(250,520,40,40);
  fill(205,150-(1*mouseButton),0);
  quad(260,560,330,574,330,600,270,600);
  fill(105,0,0);
  ellipse(300,500,40,35);
  rect(273,522,325,575);
  triangle(275,525,250,575,275,575);
  triangle(300,525,275,575,300,575);
  fill(0,255,0+(255*mouseButton));
  ellipse(345,515,40,40);
  fill(205,125-(120*mouseButton),0+(75*mouseButton));
  quad(310,540,360,540,355,585,330,585);
  ellipse(340,520,40,40);
  fill(0,115,0);
  quad(320,585,355,580,380,600,340,600);
  ellipse(355,585,10,10);
  
  
  //Custom Mouse Cursor
  noStroke();
  colorMode(HSB);
  fill (0,255,255,120);
  ellipse (mouseX, mouseY, 10, 10);
  //Mouse debug positioning
  //text (mouseX, 10, 20);
  //text (mouseY, 10, 30);
}