一方向運動リストに戻る    印刷する

一方向の直線運動…複数(同一の円の列)

複数の円が、水平に列をなして、一定速度で運動します。 円がひとつの運動と同じ動きを、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文で、配列中の一つ一つの円の位置を動かし、描画しています。

Your browser does not support the canvas tag.

クリックで停止⇔再開
【リスト 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);
     }
}

arigat アットマーク acm.org / copyright © info