記録

勉強したことに関するのノート。見返して分かるようにしてます。

12回目のp5.js

配列を使ったプログラミング
箱を作ってそれに数字や文字を入れ、それを呼び出す。

0番目の箱の文字を呼び出し、textとして表示する。

let arr = []; //箱作る

function setup() {
  createCanvas(400, 400);
  colorMode(HSB, 360, 100, 100, 100);

  arr[0] = 10; //arrの箱の0番目に10を代入する
  arr[1] = 20;
  arr[2] = 30;
  
  background(0,0,0);
  textAlign(CENTER);
  fill(0,0,100);
  textSize(50);
  text(arr[0],width/2,height/2);
}

30個箱を作り、その中に1から10までの数字を入れ、それぞれの文字を順番にtextで呼び出す。

let arr = []; //箱作る
let num = 30;

function setup() {
  createCanvas(400, 400);
  colorMode(HSB, 360, 100, 100, 100);

  for (let i = 0; i < num; i = i + 1) {
    let n = floor(random(1, 11));
    arr[i] = n;
  }
  textAlign(CENTER);
  text(arr, width / 2, height / 2);
}

0~3の箱にx,yを入れ、function moveでxとyの値を変化させ、丸を動かす。

let x = [];
let y = [];
let r = 5;

function setup() {
  createCanvas(400, 400);
  colorMode(HSB, 360, 100, 100, 100);

  x[0] = random(width);
  y[0] = random(height);

  x[1] = random(width);
  y[1] = random(height);

  x[2] = random(width);
  y[2] = random(height);
}

function draw() {
  background(0, 0, 20, 3);

  move();
  display();

}

function move() {
  x[0] = x[0] + random(-1, 1) * 1;
  y[0] = y[0] + random(-1, 1) * 1;

  x[1] = x[1] + random(-1, 1) * 2;
  y[1] = y[1] + random(-1, 1) * 2;

  x[2] = x[2] + random(-1, 1) * 3;
  y[2] = y[2] + random(-1, 1) * 3;
}


function display() {
  stroke(0, 0, 100);
  noFill();
  ellipse(x[0], y[0], r, r);
  ellipse(x[1], y[1], r, r);
  ellipse(x[2], y[2], r, r);
}

x=[1]など、一つ一つ人力で入れるのではなく、for文で入れていく。それにより自由に丸の量を変化させたり、箱の種類を増やすことができる。

let x = [];
let y = [];
let num = 100;

let c = [];
let r = [];
let a = [];

function setup() {
  createCanvas(400, 400);
  colorMode(HSB, 360, 100, 100, 100);
  background(0, 0, 20);
  
  for (let i = 0; i < num; i = i + 1) {
    x[i] = random(width);
    y[i] = random(height);
    c[i] = random(360);
    r[i] = random(5, 50);
    a[i] = random(100);
  }
}

function draw() {
  background(0, 0, 20);

  move();
  display();
}

function move() {
  for (let i = 0; i < num; i = i + 1) {
    x[i] = x[i] + random(-1, 1) * 2;
    y[i] = y[i] + random(-1, 1) * 2;
  }
}

function display() {
  for (let i = 0; i < num; i = i + 1) {
    stroke(c[i], 100, 100,a[i]*2);
    fill((c[i] + 180) % 360, 100, 100,a[i]);
    ellipse(x[i], y[i], r[i], r[i]);
  }
}

課題で制作したちょうちょがたくさん飛ぶ

let x = [];
let y = [];
let num = 70;

let c = [];
let r = [];
let r2 = [];
let a = [];

function setup() {
  createCanvas(windowWidth, windowHeight);
  colorMode(HSB, 360, 100, 100, 100);
  background(0, 0, 20);

  for (let i = 0; i < num; i = i + 1) {
    x[i] = random(width);
    y[i] = random(height);
    c[i] = random(360);
    r[i] = random(5, 15);
    r2[i] = random(25, 35);
    a[i] = random(30,100);
  }
}

function draw() {
  background(0, 0, 0);

  move();
  display();
}

function move() {
  for (let i = 0; i < num; i = i + 1) {
    x[i] = x[i] + random(-a[i], a[i]) * 0.08;
    y[i] = y[i] + random(-a[i], a[i]) * 0.08;
  }
}

function display() {
  for (let i = 0; i < num; i = i + 1) {
    stroke(c[i], 100, 100, a[i] * 2);
    fill((c[i] + 180) % 360, 100, 100, a[i]);

    triangle(x[i], y[i], x[i] - random(r[i], r2[i]), y[i] + random(r[i], r2[i]), x[i] - random(r[i], r2[i]) * 2, y[i] - random(r[i], r2[i]) * 2);
    triangle(x[i], y[i], x[i] + random(r[i], r2[i]), y[i] - random(r[i], r2[i]), x[i] + random(r[i], r2[i]) * 2, y[i] + random(r[i], r2[i]) * 2);

    stroke(0, 0, 100, a[i]/3);
    line(x[i] * 2, y[i] * 2, -y[i] * 2, -x[i] * 2);
  }
}