xxxxxxxxxx
97
// inspired by https://www.youtube.com/watch?v=JbfhzlMk2eY
var canvas_width = 600;
var canvas_height = 600;
var cols, rows;
var cell_width = 10;
var grid = [];
// let stroke_width = w*0.25;
let stroke_width = cell_width*0.25;
let seed = 5; // https://p5js.org/reference/#/p5/randomSeed
function setup() {
randomSeed(seed);
createCanvas(canvas_width - cell_width, canvas_height - cell_width);
cols = floor(canvas_width / cell_width);
rows = floor(canvas_height / cell_width);
makeGrid();
}
function draw() {
background(240);
for (var i = 0; i < grid.length; i++) {
grid[i].show();
}
}
function makePattern(num) {
let arr = [];
for (var i = 0; i < num; i++) {
var randint = floor(random() * 10);
if (randint > 5) {
arr.push(1);
} else {
arr.push(0);
}
}
return arr;
}
function makeRows(arr) {
var m = max(rows, cols);
for (var j = 0; j < m; j++) {
for (var i = 0; i < m; i += 2) {
if (arr[j] == 1) {
var cell = new Cell1(i + 1, j, [60, 160, 240]);
} else {
var cell = new Cell1(i, j, [60, 160, 240]);
}
grid.push(cell);
}
}
}
function makeCols(arr) {
var m = max(rows, cols);
for (var i = 0; i < m; i++) {
for (var j = 0; j < m; j += 2) {
if (arr[i] == 1) {
var cell = new Cell2(i, j + 1, [60, 160, 240]);
} else {
var cell = new Cell2(i, j, [60, 160, 240]);
}
grid.push(cell);
}
}
}
function makeGrid() {
let myArr = makePattern(max(rows, cols));
makeRows(myArr);
makeCols(myArr);
}
function Cell1(i, j, sc) {
this.i = i;
this.j = j;
this.show = function () {
var x = this.i * cell_width;
var y = this.j * cell_width;
strokeWeight(stroke_width);
stroke(sc);
line(x, y, x + cell_width, y);
};
}
function Cell2(i, j, sc) {
this.i = i;
this.j = j;
this.show = function () {
var x = this.i * cell_width;
var y = this.j * cell_width;
strokeWeight(stroke_width);
stroke(sc);
line(x, y, x, y + cell_width);
};
}