This week, I’ve been feeling a lot of chaotic energy with balancing my professional commitments, class deadlines, friends, capstone, and job interviews. Thus, I wanted my sketch to reflect the seemingly segmented aspects of my life going a bit berserk.
Because the squares ended up moving so quickly and brightly, I wanted to make the default option be a paused version of a sketch with the option to play in case the quick movements bothered anyone. Thus, I ended up adding a pause and play button. I had considered just using a space bar to toggle between pause and play, but wanted to use more visual instructions.
Video of Sketch (Warning: Bright Flashing Lights)
My code is pretty straightforward. I created a function that created each “tile.” I didn’t want each tile to be uniform so I randomly changed the color and number of internal squares when drawing each tile. From there, I simply used a double for loop to create the grid of tiles.
I used an array of colors to store my palette which I created using coolors.co (my go to palette inspiration site).
Something I messed up and fixed: originally, I created a String array, having the hex colors in strings. However, this was not compatible with the fill method so after looking at the Processing documentation, I realized that color was a data type in Processing and was able to create an array using the color primitive.
If I were to repeat this sketch creation again, I would try to avoid having so many nested for loops and do the mousePressed function in a less hard-coded way.
Here’s my code!
//color palette
color[] colors = {#8ac4ff, #7e7f9a, #4FB286, #F3DE8A, #Eb9486};
boolean pause = true;
void setup() {
size(500, 500);
rectMode(CENTER);
//play button
triangle(width/6, height -50, width/6, height - 20, width/4.5, height-35);
fill(colors[0]);
//pause button
rect(width/10, height - 35, 5, 30);
rect(width/10 - 10, height - 35, 5, 30);
//title
textSize(20);
fill(0);
text("Senior Year", width/3 * 2, height - 35);
}
void draw() {
//looping through width
for (int i = 40; i < width; i += 60) {
//looping through height
for (int j = 40; j < height- 50; j += 60) {
drawSquare(i, j);
}
}
//sketch starts paused
if(pause) {
noLoop();
}
}
void drawSquare(int x,int y) {
int w = 5;
//changes number of internal squares within a tile
float count = random(5,9);
//picks a color randomly from palette
color c = colors[int(random(colors.length))];
fill(c);
rect(x,y, 10 * w, 10 * w);
for (float i = count; i > 0; i--) {
fill(c);
rect(x,y, i * (count/1.5), i* (count/1.5));
}
}
void mouseClicked() {
//if pause button is clicked, toggle button colors and stop loop
if(mouseX < (width/10 + 5) && mouseX >= (width/10 -15) && mouseY > height - 50 && mouseY <= height -20) {
pause = true;
fill(255);
triangle(width/6, height -50, width/6, height - 20, width/4.5, height-35);
fill(colors[0]);
rect(width/10, height - 35, 5, 30);
rect(width/10 - 10, height - 35, 5, 30);
noLoop();
//if play button is clicked, toggle button colors and start loop
} else if (mouseX > width/6 && mouseX <= width/4.5 && mouseY > height - 50 && mouseY <= height -20) {
pause = false;
loop();
fill(colors[0]);
triangle(width/6, height -50, width/6, height - 20, width/4.5, height-35);
fill(255);
rect(width/10, height - 35, 5, 30);
rect(width/10 - 10, height - 35, 5, 30);
}
}
