페어 프로그래밍

다른 사람들이 구현한 함수를 호출하여 스케치를 해본다.

다른 학우들이 구현한 함수들을 활용하여 하나의 작품을 프로세싱 언어로 스케치해보도록 하겠다. 이 활동을 통해 라이브러리에 대해 이해할 수 있다.

void drawFrog(int x, int y, int size) {  
  noStroke();

  /*head*/
  fill(53, 182, 44);
  ellipse(x, y-size/4.8, size/1.25, size/1.5);
  ellipse(x-size/4.8, y-size/2, size/4, size/4);
  ellipse(x+size/4.8, y-size/2, size/4, size/4);

  /*body*/
  ellipse(x, y+size/4, size, size);
  fill(109, 200, 59);
  ellipse(x, y+size/3.7, size/1.6, size/1.5);

  /*legs*/

  fill(53, 182, 44);
  bezier(x+size/2.4, y+size/80, x+size/1.1, y-size/12, x+size/1.85, y+size/1.5, x+size/2.4, y+size/1.5);
  bezier(x-size/2.4, y+size/80, x-size/1.1, y-size/12, x-size/1.85, y+size/1.5, x-size/2.4, y+size/1.5);
  rect(x+size/3, y+size/2, size/3, size/4.8, 100);
  rect(x-size/1.55, y+size/2, size/3, size/4.8, 100);

  /*eyes*/
  fill(255);
  ellipse(x-size/4.8, y-size/2, size/6, size/6);
  ellipse(x+size/4.8, y-size/2, size/6, size/6);

  fill(0);
  ellipse(x-size/4.8, y-size/2, size/8, size/8);
  ellipse(x+size/4.8, y-size/2, size/8, size/8);   

  ellipse(x-size/24, y-size/2.7, size/40, size/40);
  ellipse(x+size/24, y-size/2.7, size/40, size/40);

  fill(255);
  ellipse(x-size/5.3, y-size/1.9, size/40, size/40);
  ellipse(x+size/5.3, y-size/1.9, size/40, size/40);

  /*cheek*/
  fill(200, 0, 0);
  ellipse(x-size/4, y-size/3.9, size/4, size/4);
  ellipse(x+size/4, y-size/3.9, size/4, size/4);

  /*mouth*/
  noFill();
  stroke(0);
  strokeWeight(size/55);
  arc(x, y-size/3.5, size/3, size/4, 0, PI);
}

void drawRyan(int x, int y) {
  //background(255);
  strokeWeight(5);

  drawRyanBody(x, y);
  drawRyanFace(x, y);
}

void drawRyanFace(int x, int y) {
  color black = color(0, 0, 0);
  color orange = color(239,166,39);  
  fill(orange);
  stroke(black);
  strokeWeight(5);
  //ear
  ellipse(x - 60, y - 85, 40, 40);
  ellipse(x + 60, y - 85, 40, 40);
  //face
  ellipse(x, y, 200, 200);
  //eyebrows
  strokeWeight(8);
  line(x - 30, y - 40, x - 60, y - 40);
  line(x + 30, y - 40, x + 60, y - 40);
  //mustache
  strokeWeight(5);
  fill(255);
  bezier(x, y + 10, x - 42, y - 0, x - 40, y + 50,  x, y + 30);
  bezier(x, y + 10,  x + 42, y - 0, x + 40, y + 50,  x, y + 30);
  stroke(0);
  fill(0);
  //eyes
  ellipse(x - 40, y - 10, 10, 10);
  ellipse(x + 40, y - 10, 10, 10);
 //noses
  ellipse(x, y + 10, 10, 10);
}

void drawRyanBody(int x, int y) {
  color black = color(0, 0, 0);
  color white = color(255, 255, 255);
  color orange = color(239,166,39);

  fill(orange);

  //legs
  stroke(black);
  ellipse(x + 34, y + 200, 54, 103);
  ellipse(x + -34, y + 200, 54, 103);

  //body
  stroke(orange);
  rect(x - 64, y + 61, 128, 131);

  stroke(black);

  //arms
  bezier(x - 65, y + 82, x - 82, y + 102, x - 104, y + 185, x - 66, y + 192);
  bezier(x + 65, y + 82, x + 82, y + 102, x + 104, y + 175, x + 66, y + 192);

  //make lines
  line(x + 61, y + 126, x + 61, y + 195);
  line(x - 61, y + 126, x - 61, y + 195);
  line(x + 14, y + 195, x - 14, y + 195);

  //stomach
  stroke(white);
  fill(white);
  ellipse(x, y + 145, 65, 65);

  noStroke();
  fill(orange);
  triangle(x + -10, y + 125, x + -20, y + 110, x + 0, y + 110);
  triangle(x + 10, y + 125, x, y + 110, x + 20, y + 110);
}


void drawRabbit(int x, int y, int size, int height) {
//face
  fill(255, 200, 200);
  ellipse(x, y, size, height);
  fill(0);
  ellipse(x-20, y-5, size/8, height/8);
  ellipse(x+20, y-5, size/8, height/8);
  triangle(x, y+15, x-10, y+5, x+10, y+5);
//ear
  fill(255, 200, 200);
  ellipse(x-25, y-50, size/8*3, height/8*7);
  fill(255, 200, 200);
  ellipse(x+25, y-50, size/8*3, height/8*7);
  fill(255);
  ellipse(x-25, y-50, size/8, height/8*5);
  ellipse(x+25, y-50, size/8, height/8*5);

//body
  fill(255, 200, 200);
  ellipse(x, y+95, size/8*9, height/8*13);
  fill(255);
  arc(x, y+100, size/8*7, height/8*9, 0, radians(180));
//arm
  fill(255, 200, 200);
  ellipse(x+40, y+60, size/8*6, height/4);
  ellipse(x-40, y+60, size/8*6, height/4);
  fill(255);
  ellipse(x-70, y+60, size/4, height/16*5);
  ellipse(x+70, y+60, size/4, height/16*5);
//feet
  fill(255);
  ellipse(x-35, y+160, size/16*9, height/16*5);
  ellipse(x+35, y+160, size/16*9, height/16*5);
//ribbon
  fill(255, 0, 0);
  triangle(x, y+40, x-20, y+30, x-20, y+50);
  triangle(x, y+40, x+20, y+30, x+20, y+50);
  fill(255, 150, 150);
  ellipse(x, y+40, size/8, height/8);
}


void drawManbo(int x, int y, int size){
/* x= x position
   y= y position
   size= size
   */
  strokeWeight(size*0.007);

  //ear
  fill(0,100,105);
  arc(x-size*0.2,y-size*0.6,size*0.3,size*0.24,radians(274.4),radians(339));
  arc(x+size*0.2,y-size*0.6,size*0.3,size*0.24,radians(201),radians(265.8));
  arc(x,y-size*0.62,size*0.45,size*0.4,radians(172.5),radians(210));
  arc(x,y-size*0.62,size*0.45,size*0.4,radians(330.5),radians(367.5));

  //arm
  ellipse(x,y+size*0.04,size*1.16,size*0.4);
  arc(x,y+size*0.2,size*1.22,size*1.15,radians(200),radians(340));

  //head
ellipse(x,y-0.48*size,size*0.55,size*0.4);

  //face
  noStroke();
  fill(255,245,220);
  ellipse(x, y-0.42*size,size*0.40,size*0.30);
  fill(0,100,105);
  arc(x,y-0.65*size,size*0.2,size*0.2,radians(20),radians(160));

 //eye
 strokeWeight(size*0.007);
 stroke(0);
 line(x-size*0.15,y-size*0.495,x-size*0.07,y-size*0.505);
 line(x+size*0.15,y-size*0.495,x+size*0.07,y-size*0.505);

 //tooth
 noFill();
 arc(x,y-0.45*size,size*0.12,size*0.1,radians(189),radians(210));
 arc(x-size*0.102,y-0.45*size,size*0.13,size*0.1,radians(330),radians(350));
 arc(x,y-0.45*size,size*0.12,size*0.1,radians(330),radians(351));
 arc(x+size*0.102,y-0.45*size,size*0.13,size*0.1,radians(190),radians(210));

 //mouse
 arc(x,y,size,size*0.92,radians(263),radians(277));

  //body
  stroke(0);
  fill(0,100,105);
ellipse(x,y-size*0.02, size*0.98,size*0.75);
  //Bae?
  strokeWeight(size*0.007);
  fill(255,245,220);
  arc(x,y, size,size*0.79,radians(230), radians(310));
  arc(x,y-size*0.353,size,size*0.9,radians(48),radians(133));
  arc(x-size*0.11,y-size*0.105,size*0.9,size*1.2,radians(340.8),radians(368));
  arc(x+size*0.105,y-size*0.105,size*0.9,size*1.2,radians(172),radians(199));
  fill(0,100,105);
  arc(x,y+0.15*size,size*0.5,size*0.25,radians(222),radians(318));
  noStroke();
  arc(x,y+0.15*size,size*0.5-size*0.007,size*0.25-size*0.007,radians(180),radians(360));
  ellipse(x,y+0.15*size,size*0.3,size*0.2);

 //foot
  stroke(0);
  fill(255,245,220);
  ellipse(x-size*0.29,y+size*0.3,size*0.38,size*0.3);
  ellipse(x+size*0.29,y+size*0.3,size*0.38,size*0.3);
  fill(170,117,87);
  ellipse(x-size*0.29,y+size*0.3,size*0.18,size*0.13);
  ellipse(x+size*0.29,y+size*0.3,size*0.18,size*0.13);

  //lettering?
  strokeWeight(size*0.013);
  line(x-size*0.45,y-size*0.48,x-size*0.38,y-size*0.48);
  line(x-size*0.45,y-size*0.48,x-size*0.38,y-size*0.55);
  line(x-size*0.45,y-size*0.55,x-size*0.38,y-size*0.55);
  line(x-size*0.44,y-size*0.51,x-size*0.40,y-size*0.51);
  strokeWeight(size*0.01);
  line(x-size*0.4,y-size*0.44,x-size*0.35,y-size*0.46);
  line(x-size*0.35,y-size*0.46,x-size*0.37,y-size*0.4);
  line(x-size*0.37,y-size*0.4,x-size*0.33,y-size*0.42);
  line(x-size*0.38,y-size*0.43,x-size*0.34,y-size*0.44);
}

void drawCloud(int x,int y,int z,int w,int k)
{
  noStroke();
  fill(k);
  ellipse(x,y,z,z);
  ellipse(x-w,y,0.8*z,0.8*z);
  ellipse(x+w,y,0.8*z,0.8*z);
}

void drawLion(int x, int y, int a, int b){
  //background(255);

  //hair
  fill(220,120,0);
  triangle(x-50,y-110,x,y-160,x-60,y-180);
  triangle(x+40,y-110,x,y-160,x+50,y-180);
  triangle(x-40,y-130,x-40,y-80,x-90,y-105);
  triangle(x+40,y-130,x+40,y-80,x+85,y-105);

  //arm
  fill(250,180,70);
  ellipse(x-60,y-50,a-10,b*1/4);
  ellipse(x+60,y-50,a-10,b*1/4);

  //leg
  fill(250,180,70);
  ellipse(x-30,y+60,a-40,b-20);
  ellipse(x+30,y+60,a-40,b-20);

  //body
  fill(250,180,70);
  ellipse(x,y-10,a+30,b+50);
  fill(250,220,170);
  ellipse(x,y,a,b); //250,360

  //head
  fill(250,180,70);
  ellipse(x,y-110,a+30,b);

  //eye
  fill(0);
  ellipse(x-20,y-110,a-63,b-93);
  ellipse(x+20,y-110,a-63,b-93);

  //nose
  fill(0);
  triangle(x-5,y-100,x+5,y-100,x,y-95);

  //mouth
  fill(255,0,0);
  ellipse(x,y-85,a-60,b-90);
  fill(255);
  ellipse(x-10,y-90,a-51,b-81);
  ellipse(x+10,y-90,a-51,b-81);
}

void drawSun(int x,int y,int size, int line, int weight) {
  fill(255,0,0);
  stroke(255,100,0,80);
  strokeWeight(weight);
  for(int i=line; i<=width-line; i++) {
    stroke(255,100,0,70);
    line(x,y,i,random(line,height-line));
  }
  ellipse(x,y,size,size);
}

void setup() {
  size(1000, 1000);
  color green = color(102, 255, 102);
  color sky = color(153, 225, 255);

  noStroke();
  fill(sky);
  rect(0, 0, width, 2 * height / 3);

  drawSun(950, 50, 100, 1000,1);

  fill(green);
  rect(0, 2 * height / 3, width, height / 3);
  drawCloud(100, 100, 200, 100, 240);
  drawCloud(700, 200, 100, 60, 220);
  drawCloud(500, 50, 150, 100, 250);
  drawCloud(800, 400, 100, 50, 230);
  drawCloud(200, 350, 150, 100, 230);

  drawRyan(500, 450);

  drawFrog(700, 700, 50);
  drawFrog(50, 800, 50);
  drawFrog(40, 650, 50);
  drawFrog(600, 750, 50);

  noStroke();
  drawRabbit(300, 650, 80, 80);

  drawManbo(850,700, 200);

  stroke(10);
  drawLion(150, 600,70,100);
}

결과는 다음과 같다.