/* built with Studio Sketchpad: * https://sketchpad.cc * * observe the evolution of this sketch: * https://studio.sketchpad.cc/sp/pad/view/ro.BlsXmXoE6I9/rev.6 * * authors: * GoToLoop * license (unless otherwise specified): * creative commons attribution-share alike 3.0 license. * https://creativecommons.org/licenses/by-sa/3.0/ */ /** * Rectangle Toggle 4 (v4.13) * mod GoToLoop (2013/Jun) * for GreenMoonSol * * http://forum.processing.org/topic/problem-with-my-rectangle-class * * http://forum.processing.org/topic/draggable-balls-to-any-cell * * http://forum.processing.org/topic * /how-to-change-the-colour-of-an-objec-in-an-2d-arrayt-permanently * * http://forum.processing.org/topic * /clicking-a-square-in-a-matrix-of-squares-does-not-work-consistently * * http://studio.processingtogether.com/sp/pad/export/ro.9L5jAtga7SpyF/latest */ final static int DIM = 40, GAP = 15, LEN = DIM + GAP; final static int GRID = 8, MARGIN = 20; final boolean[][] squares = new boolean[GRID][GRID]; final static color BG = 0100, FG = #0000FF; final static color BRIGHT = 050, BLUISH = 0100; final static String GFX = JAVA2D; // Use JAVA2D or P2D boolean isMouseOverRect(int x, int y, int w, int h) { return mouseX > x & mouseX < x+w & mouseY > y & mouseY < y+h; } void setup() { size(GRID*LEN + MARGIN*2 - GAP, GRID*LEN + MARGIN*2 - GAP, GFX); noLoop(); noStroke(); smooth(); background(BG); keyPressed(); } void draw() { } void mousePressed() { for (int row=0; row!=GRID; ++row) { final int y = row*LEN + MARGIN; for (int col=0; col!=GRID; ++col) { final int x = col*LEN + MARGIN; if ( isMouseOverRect(x, y, DIM, DIM) ) { final boolean isSelected = squares[row][col] = !squares[row][col]; final color c = color(map(x, 0, width, BRIGHT, 0400), map(y, 0, height, BRIGHT, 0400), BLUISH); fill(isSelected? FG : c); rect(x, y, DIM, DIM); redraw(); return; } } } } void keyPressed() { for (int row=0; row!=GRID; ++row) { final int y = row*LEN + MARGIN; for (int col=0; col!=GRID; ++col) { final int x = col*LEN + MARGIN; fill(map(x, 0, width, BRIGHT, 0400), map(y, 0, height, BRIGHT, 0400), BLUISH); rect(x, y, DIM, DIM); squares[row][col] = false; } } redraw(); }