日常の進捗

主に自分のための,行為とその習慣化の記録

カードゲーム「15 lines of <code>」(2)雰囲気でコーディングする

カードゲームのサンプルを考えるにあたって,材料となる15行のコードを幾つか用意したくなったので,例によって特に意識をしないで雰囲気でコードを書いてみた.前にarcをつかって円弧の連結でパターンを作ったものを15行版に出来ないかと思って始めたら形になった.その後アニメーションにした.15行版はちょっと無理矢理収めた感じがある.

コード(15行版)

fullScreen();
colorMode(HSB, 360, 100, 100, 100);
background(random(360), 100, 90);
for (int y = 0; y < height; y += 100) {
  for (int x = 0; x < width; x += 100) {
    int n = (int)random(4);
    strokeWeight(50/2);
    stroke(0,0,100);
    noFill();
    if (n == 0) arc(x, y, 100, 100, 0, PI/2);
    else if (n == 1) arc(x+100, y, 100, 100, PI/2, PI);
    else if (n == 2) arc(x+100, y+100, 100, 100, PI, PI * 3/2);
    else if (n == 3) arc(x, y+100, 100, 100, PI * 3/2, PI * 2);
  }
}

コード

void setup() {
  fullScreen();
  colorMode(HSB, 360, 100, 100, 100);
}
void draw() {
  float freq = frameCount * 0.05;
  randomSeed(0);
  background(degrees(freq/5)%360, 100, 90);
  for (int y = 0; y < height; y += 100) {
    for (int x = 0; x < width; x += 100) {
      int n = (int)random(4);
      strokeWeight(100/5);
      stroke(0, 0, 100);
      noFill();
      if (n == 0) arc(x, y, 100, 100, 0+freq, PI/2+freq);
      else if (n == 1) arc(x+100, y, 100, 100, PI/2+freq, PI+freq);
      else if (n == 2) arc(x+100, y+100, 100, 100, PI+freq, PI * 3/2+freq);
      else if (n == 3) arc(x, y+100, 100, 100, PI * 3/2+freq, PI * 2+freq);
      freq *= -1;
    }
  }
}