a-16 関数(2)関数をつくる
Feb 4, 2021
a-16 関数をつくる
![]()
関数を使わずに、どせいさんを3体描きます。
void setup(){
size(500,500);
}
void draw(){
background(200,200,200);
//どせいさん左
translate(120,120);
stroke(0);
strokeWeight(3);
line(-10,-60, 20, -100);//毛
stroke(255,213,163);
strokeWeight(70);
line(0,-35,0,-45);//胴
line(0,-35,5,-35);//胴
line(0,-35,-5,-35);//胴
noStroke();
fill(248,2,42);
triangle(5, -97, 10, -89, 3, -81);//リボン
triangle(18, -97, 10, -89, 15, -81);//リボン
fill(0);
ellipse(-14,-65,8,8);
ellipse(14,-65,8,8);
ellipse(14,-75,14,8);//まゆげ
ellipse(-14,-75,14,8);//まゆげ
fill(255,213,163);
ellipse(-25,-5,25,15);//あし
ellipse(25,-5,25,15);//あし
stroke(0);
strokeWeight(2);
ellipse(0,-50,30,30);//はな
strokeWeight(1);
line(40,-55,35,-50);//ひげ
line(35,-45,40,-40);//ひげ
line(-35,-50,-40,-55);//ひげ
line(-40,-40,-35,-45);//ひげ
//どせいさん中央
translate(120,0);
stroke(0);
strokeWeight(3);
line(-10,-60, 20, -100);//毛
stroke(255,213,163);
strokeWeight(70);
line(0,-35,0,-45);//胴
line(0,-35,5,-35);//胴
line(0,-35,-5,-35);//胴
noStroke();
fill(248,2,42);
triangle(5, -97, 10, -89, 3, -81);//リボン
triangle(18, -97, 10, -89, 15, -81);//リボン
fill(0);
ellipse(-14,-65,8,8);
ellipse(14,-65,8,8);
ellipse(14,-75,14,8);//まゆげ
ellipse(-14,-75,14,8);//まゆげ
fill(255,213,163);
ellipse(-25,-5,25,15);//あし
ellipse(25,-5,25,15);//あし
stroke(0);
strokeWeight(2);
ellipse(0,-50,30,30);//はな
strokeWeight(1);
line(40,-55,35,-50);//ひげ
line(35,-45,40,-40);//ひげ
line(-35,-50,-40,-55);//ひげ
line(-40,-40,-35,-45);//ひげ
//どせいさん右
translate(120,0);
stroke(0);
strokeWeight(3);
line(-10,-60, 20, -100);//毛
stroke(255,213,163);
strokeWeight(70);
line(0,-35,0,-45);//胴
line(0,-35,5,-35);//胴
line(0,-35,-5,-35);//胴
noStroke();
fill(248,2,42);
triangle(5, -97, 10, -89, 3, -81);//リボン
triangle(18, -97, 10, -89, 15, -81);//リボン
fill(0);
ellipse(-14,-65,8,8);
ellipse(14,-65,8,8);
ellipse(14,-75,14,8);//まゆげ
ellipse(-14,-75,14,8);//まゆげ
fill(255,213,163);
ellipse(-25,-5,25,15);//あし
ellipse(25,-5,25,15);//あし
stroke(0);
strokeWeight(2);
ellipse(0,-50,30,30);//はな
strokeWeight(1);
line(40,-55,35,-50);//ひげ
line(35,-45,40,-40);//ひげ
line(-35,-50,-40,-55);//ひげ
line(-40,-40,-35,-45);//ひげ
}

ながーいコードのすえに、どせいさんを3体できました。
2体目以降は、1体目のコピーで、translate()のみを変更しています。
例えば、ひげの位置を変えたいと思っても、3体分すべて変更しなければいけません、これを「関数」で解決します。
void setup(){
size(500,500);
}
void draw(){
background(200,200,200);
doseisan(120,120);//どせいさん左
doseisan(120,0);//どせいさん中央
doseisan(120,0);//どせいさん右
}
void doseisan(int x, int y){
translate(x,y);
stroke(0);
strokeWeight(3);
line(-10,-60, 20, -100);//毛
stroke(255,213,163);
strokeWeight(70);
line(0,-35,0,-45);//胴
line(0,-35,5,-35);//胴
line(0,-35,-5,-35);//胴
noStroke();
fill(248,2,42);
triangle(5, -97, 10, -89, 3, -81);//リボン
triangle(18, -97, 10, -89, 15, -81);//リボン
fill(0);
ellipse(-14,-65,8,8);
ellipse(14,-65,8,8);
ellipse(14,-75,14,8);//まゆげ
ellipse(-14,-75,14,8);//まゆげ
fill(255,213,163);
ellipse(-25,-5,25,15);//あし
ellipse(25,-5,25,15);//あし
stroke(0);
strokeWeight(2);
ellipse(0,-50,30,30);//はな
strokeWeight(1);
line(40,-55,35,-50);//ひげ
line(35,-45,40,-40);//ひげ
line(-35,-50,-40,-55);//ひげ
line(-40,-40,-35,-45);//ひげ
}

同じ実行結果がでました。
doseisan()という関数をつくることで、コードを短くし、管理しやすくなりました。





