for 処理を繰り返す

05-3

for ()の条件を満たす間、繰り返し {}内の処理の実行する。

size(400,200);

for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 100, 60, 60);
}

上のfor文では、以下のように i = 0 を初期値として、iが3未満ならば、iを1ずつ増やして{}内を実行している。

ellipse(100 + 100 * 0, 100, 60, 60); // i=0のとき
ellipse(100 + 100 * 1, 100, 60, 60); // i=1のとき
ellipse(100 + 100 * 2, 100, 60, 60); // i=2のとき

練習

  • 円を5つ並べてみる
  • 一定の大きさで小さくなる円を3つ描く

繰り返しを繰り返す(for文を入れ子にする)

横に3つ並んだ円を、3段描く。

for-for

size(400,400);

//1段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 100, 60, 60);
}

//2段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 200, 60, 60);
}

//3段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 300, 60, 60);
}

y座標に着目すると、100ずつ増えているので、以下のように書きかえることができる。

size(400, 400);

for (int j = 0; j < 3; j++) {
  for (int i = 0; i < 3; i++) {
    ellipse(100 + 100 * i, 100 + 100 * j, 60, 60);
  }
}

繰り返しに合わせて色を付ける

for1-1

size(200, 200);
colorMode(HSB, 100);
background(99);
noStroke();

for(int x = 0; x < 10; x++){
  fill(x*10, 10, 99);
  rect(x*20, 0, 10, 10);
}

for1-2

size(200, 200);
colorMode(HSB, 100);
background(99);
noStroke();

for(int y = 0; y < 10; y++){
  for(int x = 0; x < 10 ; x++){
    fill(10*x, 10+y*10, 99);
    rect(x*20, y*20, 10, 10);
  }
}

random() ランダムに決める

random-line1 random-line2 random-line3

size(200,200);

for(int i=0; i<100; i++){
  line(random(width), random(height), random(width), random(height));
}

※プログラムが実行されるたびに、出力結果が変わる。

色もランダムにしてみる

random2-1 random2-2 random2-3

size(200, 200);
colorMode(RGB, 100);
background(99);

for(int i = 0; i < 100; i++){
  stroke(random(100), random(100), random(100));
  line(random(width), random(height), random(width), random(height));
}

ランダムな値(乱数)を変数に入れて利用する

random3-1

size(200, 200);
colorMode(HSB, 100);
background(99);

for(int x = 0; x < width; x++){
  float color1 = random(100); // 色を設定する乱数の値は0から100未満とする
  stroke(color1, 60, 99);
  line(x, 0, x, height);
}

※randomはfloat型で変数を設定する(int型にするとエラーになる)。

まとめ

制御

繰り返し処理

数学

ランダム