createCanvas(sqSize * nCols, sqSize * nRows);
for (let i = 0; i < nRows; i++) {
for (let j = 0; j < nCols; j++) {
rect(j * sqSize, i * sqSize, sqSize);
let srcRow = Math.floor(mouseY / sqSize);
let srcCol = Math.floor(mouseX / sqSize);
for(let i = 1; i <= Math.min(srcRow, srcCol); i++){
diagNW.push([srcRow - i, srcCol - i]);
for(let i = 1; i <= Math.min(nRows - 1 - srcRow, nCols - 1 - srcCol); i++){
diagSE.push([srcRow + i, srcCol + i]);
for(let i = 1; i <= Math.min(srcRow, nCols - 1 - srcCol); i++){
diagNE.push([srcRow - i, srcCol + i]);
for(let i = 1; i <= Math.min(nRows - 1 - srcRow, srcCol); i++){
diagSW.push([srcRow + i, srcCol - i]);
for(let i = 1; i <= srcRow; i++){
orthoN.push([srcRow - i, srcCol])
for(let i = 1; i <= nRows - 1 - srcRow; i++){
orthoS.push([srcRow + i, srcCol])
for(let i = 1; i <= srcCol; i++){
orthoW.push([srcRow, srcCol - i])
for(let i = 1; i <= nCols - 1 - srcCol; i++){
orthoE.push([srcRow, srcCol + i])
let allDiag = [...diagNW, ...diagSE, ...diagNE, ...diagSW];
for(let [row, col] of allDiag){
square(col * sqSize, row * sqSize, sqSize);
let allOrthos = [...orthoN, ...orthoS, ...orthoW, ...orthoE];
for(let [row, col] of allOrthos){
square(col * sqSize, row * sqSize, sqSize);