【Processing】自作関数の作り方

Processing

こんにちは。Evening Music Records株式会社 でインターンをさせて頂いている鶴留です。
今回は、自作の関数の作り方をご紹介します。

自分で関数を作るメリット

関数を自分で作ると、コードの見栄えが良くなり、同じような特徴を持つグラフィックを生成するのに役立つと思います。コードの書き換えも分かりやすくなるので、是非使い方を覚えてもらえればと思います。

まずは関数を使わずに

まずは関数を使わずにプログラムを作ってみます。
ランダムに円を生成します。

void setup() {
  size(500, 500);
  background(0);
}

void draw() {
  float x = random(0, width);
  float y = random(0, height);
  smooth();
  colorMode(HSB, 360, 100, 100);
  noStroke();
  fill(180, 99, 99);
  ellipse(x, y, 20, 20);
  fill(0, 10);
  rect(0, 0, width, height);
}

実際に作る!

先ほど作ったプログラムを自分で作った関数を交えて書き換えていきます。今回の場合は、円を描く関数を考えました。円の大きさと色を指定する関数です。
以下がコードになります。

void setup() {
  size(500, 500);
  background(0);
}

void draw() {
  ball(20, 180);
  fill(0, 10);
  rect(0, 0, width, height);
}

void ball(int r, float c) {

  float x = random(0, width);
  float y = random(0, height);

  smooth();
  colorMode(HSB, 360, 100, 100);
  noStroke();
  fill(c, 99, 99);
  ellipse(x, y, r, r);
}

これを実行すると、関数を自分で作らずに書いたプログラムと同じものになったと思います。
void ball(int r,int c)が自作した関数です。「void “任意の関数名” (変数)」で作ることが出来ます。今回は変数を二つにしています。ballという関数の中にrとcという変数があります。ball関数の中には、円を描くのに必要な要素を書きます。座標や、色や半径などです。
そこで注目して頂きたいのが、cとrの値です。cとrにはまだ決まった値が与えられていないですね。cは円の色のHSBの色相、rは円の半径の変数です。
これらの値をどこで決めるのかというと、void draw内のball()です。ball()の中には二つのパラメーターがあり、今回の場合は20と180です。これがball関数の「void ball(int r, float c)」のrとcに対応しています。つまり、自作したball関数をdraw関数内に適用しているということです。
これを利用すれば、たった一行で違う色と大きさの円を描くことが出来ます。

void setup() {
  size(500, 500);
  background(0);
}

void draw() {
  ball(20, 180);
  ball(30, 300);
  fill(0, 10);
  rect(0, 0, width, height);
}

void ball(int r, float c) {

  float x = random(0, width);
  float y = random(0, height);

  smooth();
  colorMode(HSB, 360, 100, 100);
  noStroke();
  fill(c, 99, 99);
  ellipse(x, y, r, r);
}

ball(30,300)というコードを足しました。半径30、色相300を指定し、ball関数を呼び出しています。
このように、自分で関数を作るとdraw関数内を荒らすことなく綺麗にコードが書けます。コードが見やすくなり、書き換えもしやすいです。似たような特徴を持つグラフィックをいくつか描くときに非常に役立ちます。
是非使いこなして頂きたいと思います。

今回は以上になります。

音楽情報バイラルメディアEVENING:https://evening-mashup.com/
※ インターンシップの詳細はこちらから:https://evening-mashup.com/home/music-intern 
※ 就職活動に関する情報はこちらから: https://evening-mashup.com/evening-job 

コメント

タイトルとURLをコピーしました