Avatar – Clock
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
This is my sketch for my clock about my ex boyfriend, In Bad Taste. It is a collage of my resentment that he liked video games more than me, that I wasn’t invited on this vacation to Sedona, and how frequently he called me a bad girlfriend. Alas.
Here is my inspiration for the project.
The slot machine/ clock rotates with the time of day. When the digits of the clock are the same balloons pop up letting you know that the time is now.
// Global variables. PImage bg; PImage fg; PImage armChair; PImage slotMachine; PImage the; PImage time; PImage is; PImage now; PImage cherry; PImage[] numbers = new PImage[10]; int x; int y; void setup() { size (1000, 600); frameRate(60); bg = loadImage("background.png"); fg = loadImage("foreground.png"); armChair = loadImage("armChair.png"); slotMachine = loadImage("slotMachine.png"); the = loadImage("the.png"); time = loadImage("time.png"); is = loadImage("is.png"); now = loadImage("now.png"); cherry = loadImage("cherry.png"); for(int i = 0; i < 10; i++) { numbers[i] = loadImage(str(i) + ".png"); } } float clamp(float x, float min, float max) { if(x < min) return min; if(x > max) return max; return x; } void draw() { float hr = hour(); float mn = minute(); float sc = second(); float ml = (float)(System.currentTimeMillis() % 60000); sc = ml * 0.001; background(0); image(bg, 0, 0, 1000, 600); if(hr == mn){ float amountToRise = 600.0 + 1500.0; float lengthOfRise = 8.0; //clamp(sc, 0.0, lengthOfRise) float t = (clamp(sc, 0.0, lengthOfRise) / lengthOfRise); int offset = int(amountToRise * t); println(sc); moveBalloons(offset); } image(fg, 0, 0, 1000, 600); slots(hr, mn, sc); image(slotMachine, 500, 100, 220, 380); image(cherry, 628, 44.5, 50, 65); image(armChair, 550, 250, 300, 300); //System.out.println(hr); //System.out.println(mn); } void moveBalloons(int yOffset) { x = 100 ; y = 600 - yOffset; image(the, x + sin(yOffset * 0.012) * 20.0, y, 360, 240); image(time, x - 30 + sin(yOffset * 0.010) * 10.0, y + 150, 420, 280); image(is, x + 60 + sin(yOffset * 0.014) * 15.0, y + 340, 240, 260); image(now, x + sin(yOffset * 0.006) * 11.0, y + 520, 350, 250); } void slots(float hour, float minute, float second) { PImage[] currentHr = returnTime((int)floor(hour)); PImage[] nextHr = returnTime(((int)floor(hour) + 1 )% 24); pushMatrix(); translate(558, 195); scale(0.06, 0.09); rotate(-0.05); float heightm = currentHr[0].height; float tenhourLeft = ((hour % 10.0)) / 10.0; image(currentHr[0], 0, - heightm * tenhourLeft); image(nextHr[0], 0, heightm -heightm * tenhourLeft); popMatrix(); pushMatrix(); translate(590, 196); scale(0.05, 0.09); rotate(-0.05); float heighth = currentHr[1].height; float hourLeft = (minute) / 60.0; image(currentHr[1], 0, - heighth * hourLeft); image(nextHr[1], 0, heighth -heighth * hourLeft); popMatrix(); PImage[] currentMn = returnTime((int)floor(minute)); PImage[] nextMn = returnTime(((int)floor(minute) + 1 )% 60); pushMatrix(); translate(622, 192); scale(0.05, 0.09); rotate(-0.05); float tenminLeft = ((minute % 10.0))/10.0; float heighto = currentMn[0].height; image(currentMn[0], 0, - heighto * tenminLeft); image(nextMn[0], 0, heighto -heighto * tenminLeft); popMatrix(); pushMatrix(); translate(654, 194); scale(0.045, 0.09); rotate(-0.05); float heightn = currentMn[1].height; float minuteLeft = (second)/ 60.0; image(currentMn[1], 0, - heightn * minuteLeft); image(nextMn[1], 0, heightn -heightn * minuteLeft); popMatrix(); } PImage[] returnTime(int time) { int firstD = time % 10; int secondD = time / 10; print(secondD, firstD); PImage[] currentNum = {numbers[secondD], numbers[firstD]}; return currentNum; } |