After Round 1, I noticed that all three images relied on a lone female figure to communicate loneliness. I wanted to remove that shortcut, so I used creative coding to make an empty version of the space. My p5.js sketch kept a dark window, repeated light reflections, a round table, an empty chair, and a cup of coffee. The lights gently flicker, the coffee has animated steam, and clicking toggles the light reflections. It was meant to test whether lighting, emptiness, and repetition could communicate isolation without a person.
View p5.js source
Download the original sketch
let lightsOn = true;
function setup() {
createCanvas(900, 650);
pixelDensity(2);
}
function draw() {
background("#c9b496");
drawRoom();
drawWindow();
drawLights();
drawChair();
drawTable();
drawCoffeeCup();
drawSteam();
}
function drawRoom() {
noStroke();
fill("#806b5c");
rect(0, 450, width, 200);
stroke("#a48b74");
strokeWeight(4);
line(0, 450, width, 450);
}
function drawWindow() {
noStroke();
fill("#514740");
rect(55, 55, 790, 405);
fill("#151b24");
rect(68, 68, 764, 379);
fill(35, 43, 51, 40);
rect(400, 68, 432, 379);
stroke("#766756");
strokeWeight(4);
line(68, 447, 832, 447);
}
function drawLights() {
if (!lightsOn) return;
noStroke();
for (let i = 0; i < 6; i++) {
let x = 110 + i * 83;
let y = 102 + i * 17;
let size = 48 - i * 5;
let glow = 20 + sin(frameCount * 0.025 + i) * 8;
fill(255, 211, 151, glow);
ellipse(x, y, size * 2.5, size);
fill(255, 226, 170, 190);
ellipse(x, y, size, size * 0.3);
}
for (let i = 0; i < 6; i++) {
let x = 790 - i * 80;
let y = 100 + i * 18;
let size = 46 - i * 5;
let glow = 20 + sin(frameCount * 0.025 + i + 2) * 8;
fill(255, 211, 151, glow);
ellipse(x, y, size * 2.5, size);
fill(255, 226, 170, 190);
ellipse(x, y, size, size * 0.3);
}
}
function drawChair() {
stroke("#483c37");
strokeWeight(12);
line(225, 470, 210, 625);
line(365, 470, 380, 625);
noStroke();
fill("#574640");
rect(205, 345, 175, 125, 15);
fill("#ab9277");
rect(225, 365, 135, 85, 8);
fill("#483732");
ellipse(295, 477, 185, 45);
}
function drawTable() {
stroke("#57443a");
strokeWeight(25);
line(520, 550, 520, 660);
noStroke();
fill("#624a3f");
ellipse(515, 545, 660, 165);
fill("#9e795c");
ellipse(515, 528, 655, 145);
noFill();
stroke(220, 177, 128, 65);
strokeWeight(2);
arc(515, 525, 615, 115, PI, TWO_PI);
}
function drawCoffeeCup() {
noStroke();
fill(42, 30, 26, 50);
ellipse(563, 519, 115, 22);
fill("#e5cfaa");
ellipse(555, 511, 110, 19);
noFill();
stroke("#ead7b9");
strokeWeight(8);
ellipse(589, 475, 30, 32);
noStroke();
fill("#eee0c6");
rect(523, 452, 64, 50, 7);
fill("#f8e9cf");
ellipse(555, 453, 64, 18);
fill("#44302a");
ellipse(555, 453, 49, 10);
}
function drawSteam() {
noFill();
stroke(245, 232, 208, 85);
strokeWeight(2);
for (let i = 0; i < 3; i++) {
let sway = sin(frameCount * 0.025 + i * 2) * 8;
bezier(537 + i * 14, 440, 528 + i * 14 + sway, 427,
550 + i * 14 - sway, 410, 538 + i * 14 + sway, 388);
}
}
function mousePressed() {
lightsOn = !lightsOn;
}
function keyPressed() {
if (key === "s" || key === "S") saveCanvas("Automat_Step8", "png");
}