一方向の直線運動…複数(同一の円の列)
複数の円が、水平に列をなして、一定速度で運動します。 円がひとつの運動と同じ動きを、10個の円に対して行います。そのため、10個の円の位置(x座標)を配列に入れておきます。まず、setup()関数の前で配列を宣言します。float x[] = new float[10]; // 位置(x座標)続いて、setup()関数の中で、10個の円のx座標を初期化します。10個の円を画面の左側の見えない位置に5ピクセルの間隔で並べます。最初の円x[0]はゼロ、次の円x[1]は(直径+5)ピクセル左に、というように、順番に(直径+5)小さい値を代入します。forループを使って、この処理を10回繰り返します。
for(int i=1; i<x.length; i++){ x[i]= x[i-1] - (d+5); }x.lengthにはその要素の数、今の場合は10が入っています。
draw()関数では、同様にfor文で、配列中の一つ一つの円の位置を動かし、描画しています。
クリックで停止⇔再開
【リスト StraightM1】 float s = 2; // 移動速度 float x[] = new float[10]; // 位置(x座標) float d = 10; // 円の直径 void setup() { size(150, 150); fill(0); for(int i=1; i<x.length; i++){ x[i]= x[i-1] - (d+5); } } void draw() { background(255); //画面背景を白でクリア for(int i=0; i<x.length; i++){ x[i] = x[i]+s; // 位置を変化 if(x[i] >= width + d/2){ //右壁内に入った x[i] = -d/2; //左壁内に置く } ellipse(x[i], height/2, d, d); } }