demo.js1linkconst ROWS = 20;
2linkconst COLS = 40;
3linkconst LENGTH = 20;
4linklet board, quadrille;
5linklet col, row;
6linklet animate = true;
7linklet al;
8link
9linkfunction preload() {
10link al = loadImage('abraham_lincoln.jpg');
11link}
12link
13linkfunction setup() {
14link createCanvas(COLS * LENGTH, ROWS * LENGTH);
15link board = createQuadrille(COLS, ROWS);
16link quadrille = active(int(random(5)));
17link col = int(random(0, COLS - 4));
18link row = int(random(0, ROWS - 4));
19link}
20link
21linkfunction draw() {
22link background('#2E0E36');
23link if ((frameCount % 30 === 0) && animate) {
24link stick('u');
25link }
26link drawQuadrille(board, { cellLength: LENGTH, outline: 'magenta' });
27link drawQuadrille(quadrille, { x: col * LENGTH, y: row * LENGTH, cellLength: LENGTH, outline: '#1EB2A6' });
28link}
29link
30linkfunction keyPressed() {
31link if (key === 'c') {
32link board.clear();
33link }
34link if (key === '1' || key === '2' || key === '3' || key === '4' || key === '5') {
35link quadrille = active(parseInt(key));
36link }
37link if (key === 'u' || key === 'x' || key === 'i' || key === 'd') {
38link stick(key);
39link }
40link if (key === 'f') {
41link quadrille.reflect();
42link }
43link if (key === 'r') {
44link quadrille.rotate();
45link }
46link if (key === 't') {
47link quadrille.transpose();
48link }
49link if (key === 'q') {
50link animate = !animate;
51link }
52link row = key === 'w' ? row - 1 : key === 'z' ? row + 1 : row;
53link col = key === 'a' ? col - 1 : key === 's' ? col + 1 : col;
54link}
55link
56linkfunction stick(key) {
57link let clone = quadrille.clone();
58link clone.replace(color('#965695'));
59link board = key === 'u' ? Quadrille.OR(board, clone, row, col) :
60link key === 'x' ? Quadrille.XOR(board, clone, row, col) :
61link key === 'i' ? Quadrille.AND(board, clone, row, col) :
62link Quadrille.DIFF(board, clone, row, col);
63link quadrille = active(int(random(5)));
64link col = int(random(0, COLS - 4));
65link row = int(random(0, ROWS - 4));
66link}
67link
68linkfunction active(value) {
69link let c1 = color(random(255), random(255), random(255), 255);
70link let c2 = color(random(255), random(255), random(255), 255);
71link let c3 = color(random(255), random(255), random(255), 255);
72link let e1 = '👽';
73link switch (value) {
74link case 1:
75link return createQuadrille([[c1, 'g'],
76link [null, 'o', al],
77link [al, 'l'],
78link [e1, c2, c3]
79link ]);
80link case 2:
81link return createQuadrille(2, [c1, al, c3, e1, c2]);
82link case 3:
83link return createQuadrille(4, int(random(1, 1048576)), c2);
84link case 4:
85link return createQuadrille(5, 'hola mundo');
86link default:
87link let w = int(random(2, 6));
88link let h = int(random(2, 6));
89link return createQuadrille(w, h, int(random(1, w * h)), c3);
90link }
91link}