一方向の直線運動…複数(同一の円の列)
複数の円が、水平に列をなして、一定速度で運動します。 円がひとつの運動と同じ動きを、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);
}
}