fractalkitty looking for math? fractalkitty.com

100 days of code

hereSnipe

#random#image#interactive#animation#math#cellular-automata#animals#codepen-challenge

snipefeathersrulesdArrayrandomDeadswitchDead

let snipe
let feathers

function preload() {
  feathers = loadImage('/assets/feathers.png');
  snipe = loadImage('/assets/snipecropped.png')
}
let rules = 0;
let cnt = 0,
  n = 256;
let dArray = [];

function setup() {
  c=min(windowWidth,windowHeight)*0.9
  createCanvas(c,c);
  r = 125;
  co = floor(width / (r));
  ro = floor(height / (r));
  rectMode(CENTER)
  randomDead();
  frameRate(10);
  background(255);
}

function draw() {
  scale(0.9, 0.8)
  translate(0, 10)
  background(255)
  noStroke();
  cnt = 0;
  for (let j = 0; j <= co; j++) {
    for (let i = ro; i >= 0; i--) {
      x = r * j;
      y = r * i;
      if (dArray[cnt] === 0) {
        image(feathers, x, y, r, r)
      }
      if (dArray[cnt] === 1) {
        image(snipe, x, y, r, r)
      }
      cnt = cnt + 1
    }
  }
  if (rules === 10) {
    background(255)
    g = min(width, height)
    image(snipe, 0, 0, g, g)
  }
  if (rules === 11) {
    background(255)
    g = min(width, height)
    image(feathers, 0, 0, g, g)
  }
  switchDead()
}

function randomDead() {
  n = (co + 1) * (ro + 1);
  dArray = []
  for (let i = 0; i < n; i++) {
    tmp = random(-1, 1);
    if (tmp <= 0) {
      dArray[i] = 1;
    }
    if (tmp > 0) {
      dArray[i] = 0;
    }
  }
}

function switchDead() {
  cnt1 = 0
  for (let j = 0; j <= co; j++) {
    for (let i = ro; i >= 0; i--) {
      if (j != 0 && i != 0 && i != ro && j != co) {
        sumd = dArray[cnt1 + 1] + dArray[cnt1 - 1] + dArray[cnt1 + ro] + dArray[cnt1 + ro + 1] + dArray[cnt1 + ro + 2] + dArray[cnt1 - ro - 1] + dArray[cnt1 - ro] + dArray[cnt1 - ro - 2];
      }
      if (i === 0 && j != 0 && j != co) {
        sumd = dArray[cnt1 + ro + 1] + dArray[cnt1 + ro] + dArray[cnt1 - ro - 1] + dArray[cnt1 - ro - 2] + dArray[cnt1 - 1];
      }
      if (i === ro && j != 0 && j != co) {
        sumd = dArray[cnt1 + ro + 1] + dArray[cnt1 + ro + 2] + dArray[cnt1 - ro - 1] + dArray[cnt1 - ro] + dArray[cnt1 + 1];
      }
      if (j === co && i != 0 && i != ro) {
        sumd = dArray[cnt1 + 1] + dArray[cnt1 - 1] + dArray[cnt1 - ro - 1] + dArray[cnt1 - ro] + dArray[cnt1 - ro - 2];
      }
      if (j === 0 && i != 0 && i != ro) {
        sumd = dArray[cnt1 + 1] + dArray[cnt1 - 1] + dArray[cnt1 + ro] + dArray[cnt1 + ro + 1] + dArray[cnt1 + ro + 2];
      }
      if (i === 0 && j === 0) {
        sumd = dArray[cnt1 - 1] + dArray[cnt1 + ro] + dArray[cnt1 + ro + 1];
      }
      if (i === 0 && j === co) {
        sumd =  dArray[cnt1 - 1] + dArray[cnt1 -ro - 1] + dArray[cnt1 - ro - 2]
      }
      if (i === ro && j === 0) {
       
        sumd = dArray[cnt1 + 1] + dArray[cnt1 + ro + 1] + dArray[cnt1 + ro + 2];
      }
      if (i === ro && j === co) {
        sumd = dArray[cnt1 + 1] + dArray[cnt1 - ro - 1] + dArray[cnt1 - ro];
  
      }
      if (rules === 0) {
        if (dArray[cnt1] === 1 && (sumd === 8 || sumd === 7 || sumd === 6 || sumd === 5 || sumd === 4 || sumd === 1 || sumd === 0)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 3)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 1) {
        if (dArray[cnt1] === 1 && (sumd <= 1 || sumd > 5)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 3 || sumd === 4 || sumd === 5)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 2) {
        if (dArray[cnt1] === 1 && (sumd > 5)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 2)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 3) {
        if (dArray[cnt1] === 1 && (sumd < 3)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 1 || sumd === 2)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 4) {
        if (dArray[cnt1] === 1 && (sumd === 8 || sumd === 0 || sumd === 1 || sumd === 7)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 0 || sumd === 1 || sumd === 2)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 5) {
        if (dArray[cnt1] === 1 && (sumd === 0 || sumd === 1 || sumd === 6 || sumd === 7 || sumd === 8)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 0 || sumd === 1 || sumd === 2)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 6) {
        if (dArray[cnt1] === 1 && (sumd === 0 || sumd === 2 || sumd === 4 || sumd === 6 || sumd === 8)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 0)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 7) {
        if (dArray[cnt1] === 1 && (sumd === 8 || sumd === 5 || sumd === 1 || sumd === 0)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd < 3)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 8) {
        if (dArray[cnt1] === 1 && (sumd === 8 || sumd === 0)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 0)) {
          dArray[cnt1] = 1;
        }
      }
      if (rules === 9) {
        if (dArray[cnt1] === 1 && (sumd === 3)) {
          dArray[cnt1] = 0;
        } else if (dArray[cnt1] === 0 && (sumd === 0)) {
          dArray[cnt1] = 1;
        }
      }
      if(cnt===0){
        print(sumd)
      }
      cnt1 = cnt1 + 1
    }
  }
  stroke(255);
  fill(0)
  push()
  scale(1, 1)
  for (let i = 0; i <= 11; i++) {
    circle(width+10 , 30 * i + 40, 10)
  }
  fill(199, 158, 70)
  circle(width+10 , 30 * rules + 40, 10)
  pop()
}

function mousePressed() {
  randomDead();
}

function keyPressed() {
  if (keyCode === 32 || keyCode === 40) {
    rules = rules + 1;
    if (rules > 11) {
      rules = 0;
    }
    randomDead();
  }
  if (keyCode === 38) {
    rules = rules - 1;
    if (rules < 0) {
      rules = 11;
    }
    randomDead();
  }
}