これまでに、 background() や circle() といった関数を使ってプログラムを書いてきました。Processing(に限らず、多くのプログラミング言語)では、自分で関数を作成することができます。関数の作り方を身につけると、より洗練されたプログラムを書くことができるようになります。
(1ー1)
void setup()
{
size(800, 600);
}
void drawShapes() {
int x = 400;
int y = 300;
fill(128);
stroke(240);
strokeWeight(5);
circle(x-20, y+10, 40);
rect(x-20, y-30, 40, 40, 2);
triangle(x-10, y+35, x+40, y+35, x+15, y-5);
}
void draw()
{
background(240);
drawShapes();
}
(1ー2)
void setup()
{
size(800, 600);
}
void drawShapes(int x, int y) {
fill(128);
stroke(240);
strokeWeight(5);
circle(x-20, y+10, 40);
rect(x-20, y-30, 40, 40, 2);
triangle(x-10, y+35, x+40, y+35, x+15, y-5);
}
void draw()
{
background(240);
drawShapes(400, 300);
}
(1ー3)
void setup()
{
size(800, 600);
}
void drawShapes(int x, int y) {
fill(128);
stroke(240);
strokeWeight(5);
circle(x-20, y+10, 40);
rect(x-20, y-30, 40, 40, 2);
triangle(x-10, y+35, x+40, y+35, x+15, y-5);
}
void draw()
{
background(240);
drawShapes(400, 300);
drawShapes(500, 300);
drawShapes(400, 400);
drawShapes(500, 400);
}
関数は、「処理をひとまとめにして、名前をつけたもの」というイメージです。 似たような処理(この場合は図形の描画)を何回も書かなくて済むので、プログラムの見通しが良くなり、考えやすくなります。
上記の例では、drawShapes という(プログラマが適当につけた)名前の関数を作っています(関数の定義)。
作成した関数 drawShapes() は draw() の中で使っています。
(1ー2)と(1ー3)の例では、関数に値を渡しています。関数に与える値( drawShapes(400, 300); の 400, 300)を「引数」と呼びます。

(2ー1)
void setup()
{
size(800, 600);
}
float average(float a, float b) {
float r;
r = (a + b) / 2;
return r;
}
void draw()
{
background(255);
float c = average(500, 200);
fill(0);
textSize(60);
text(c, 400, 300);
}
(2ー2)
void setup()
{
size(800, 600);
}
float average(float a, float b) {
return (a + b) / 2;
}
void draw()
{
background(255);
fill(0);
circle(300, 200, 20);
circle(mouseX, mouseY, 20);
float x = average(300, mouseX);
float y = average(200, mouseY);
circle(x, y, 20);
}
この例では、average という(これもプログラマが適当につけた)名前の関数を定義しています。
プログラム中の
float average(float a, float b)
の冒頭(average の前)に float とあります。
これは、関数 average は、float 型の値を返すという意味です。
もし、整数を返したければ、冒頭の部分は int average(…) になります。
特に値を返さない場合は void average(…) と書きます。

(3ー1)
void setup()
{
size(800, 600);
}
float larger(float a, float b) {
if(a > b) {
return a;
} else {
return b;
}
}
void draw()
{
background(255);
fill(0);
float c = larger(mouseX, width/2);
textSize(60);
text(c, 400, 300);
}
(3ー2)
void setup()
{
size(800, 600);
}
float larger(float a, float b) {
if(a > b) {
return a;
} else {
return b;
}
}
void draw()
{
background(255);
fill(0);
line(0, height/2, width, height/2);
line(width/2, 0, width/2, height);
float x = larger(mouseX, width/2);
float y = larger(mouseY, height/2);
circle(x, y, 20);
}
2つの値 a と b を引数にとって、大きい方の値を返す関数 float larger(float a, float b) を作成しています。
larger もプログラマが適当につけた関数名です。