/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.tLtghOnlQqT/rev.11
*
* authors:
* GoToLoop
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
/**
* CellGrid (v4.1)
* by GoToLoop (2015/Jul/09)
*
* forum.Processing.org/two/discussion/11605/100x100-grid-draw-at-2-fps
* studio.ProcessingTogether.com/sp/pad/export/ro.9KbaSot4iSjhZ/latest
*/
const W = 640, H = 480, FPS = 30,
COLS = 100, ROWS = 80, BYTES = 5,
WIDE = W/COLS, WIDE_PLUS = WIDE + 1, TALL = H/ROWS,
ON = -1, OFF = 0,
RESHUFFLE = true, // change it to false to stop auto-reshuffle.
cells = new DataView(new ArrayBuffer(COLS*ROWS*BYTES));
void setup() {
size(W, H, JAVA2D);
noSmooth(); noStroke(); rectMode(CORNER); frameRate(FPS);
fill(ON);
setCellCoords();
}
void draw() {
RESHUFFLE && randomCellRefill();
println(frameRate);
background(OFF);
for (var idx = 0; idx < cells.byteLength; idx += BYTES) cells.getInt8(idx) &&
rect(cells.getInt16(idx + 1, true), cells.getInt16(idx + 3, true), WIDE_PLUS, TALL);
}
void mousePressed() {
RESHUFFLE || randomCellRefill();
}
function randomCellRefill() {
for (var idx = 0; idx < cells.byteLength; idx += BYTES)
cells.setInt8(idx, random(1) < .5);
}
function setCellCoords() {
RESHUFFLE || randomCellRefill();
for (var x, y, idx = 0; idx < cells.byteLength; idx += BYTES) {
x = idx/BYTES%COLS * WIDE; y = (idx/BYTES/COLS | 0) * TALL;
cells.setInt16(idx + 1, x, true); cells.setInt16(idx + 3, y, true);
}
}