Description
Inspired by the movie "The best offer" - - 1960x1080 - 30frames - GIF 30mb
Artwork info and exploration:
- Screens includes post processed Classical artworks CC0 portraits (titles below),
- Cryptocurrencies ATH in Oct/Nov 2021 and procedural loops
- On the monitor the figure is looking at, you can find "Chatgpt" writing a code for p5.js - of a functional "GM GN" mini game made entirely using chatgpt.openai.com (code + info below)
- 3 copies of "The tickle magazine" Issue #65 #75 #78 --> https://objkt.com/profile/thetickle/created
Here's the list of the cc0 artworks included:
- Veiled Circassian Beauty - Jean-Léon Gérôme
- Portrait of a nobleman as Aeneas - Nicolas Regnier
- Mans head - Gejza Schiller
- Štúdia sediaceho muža - Gejza Schiller
- Self-Portrait - Edgar Degas
- The Flute Player (1621) - Abraham Bloemaer
- The Empress Frederick of Germany as Crown Princess of Prussia (1882) - Heinrich von Angeli
- Portrait of the Painter Charles Theriat (1886) - Julius Leblanc Stewart
- Boy Bitten by a Lizard - Caravaggio
- Souvenir - William Bouguereau
- Achille De Gas in the Uniform of a Cadet - Edgar Degas
- Portrait Of A Bearded Man - William Etty
- Léopoldine au Livre d’Heures - Auguste de Châtillon
- George James Welbore Agar-Ellis - Sir Thomas Lawrence
Here is the code of the hidden "GM GN" mini game:
Open in your browser p5.js -- > https://editor.p5js.org/ < - - delete the default values and copy and paste the code below:
- Left click to increase the velocity
- Right click and save a screenshot
Code:
let x = 200;
let y = 200;
let velocity = 100;
let gravity = 0.22;
let hits = 0;
let misses = 0;
let textX = 0;
let ballSize = 50;
function setup() {
createCanvas(400, 400);
textFont("Space Mono");
}
function draw() {
let totalCounter = hits + misses;
if (misses >= 69) {
background(0, 255, 0);
} else if (totalCounter >= 200) {
background(0, 0, 255);
} else if (totalCounter >= 300) {
background(255, 0, 0);
gravity = 0.22 * 1.5;
} else {
background(255);
}
stroke(0);
for (let i = 0; i < width; i += 20) {
line(i, 0, i, height);
}
for (let j = 0; j < height; j += 20) {
line(0, j, width, j);
}
x = mouseX;
if (x < width / 2) {
ballSize = lerp(ballSize, 50 * 0.67, 0.05);
} else {
ballSize = lerp(ballSize, 50, 0.05);
}
y += velocity;
velocity += gravity;
if (y > height - ballSize / 2) {
velocity = -velocity * 0.95;
y = height - ballSize / 2;
misses++;
}
if (y < ballSize / 2) {
velocity = -velocity * 0.95;
y = ballSize / 2;
hits++;
}
if (totalCounter >= 200) {
fill(255, 0, 0);
rectMode(CENTER);
rect(x, y, ballSize, ballSize);
} else {
fill(0, 255, 0);
ellipse(x, y, ballSize, ballSize);
}
fill(0);
textSize(20);
text("GM: " + hits, 50, 50);
text("GN: " + misses, 300, 350);
fill(0);
textSize(20);
text("Why joining the army if you can be a pirate?", textX, height / 2);
textX--;
if (textX < -width) {
textX = width;
}
}
function mousePressed() {
if (mouseButton === LEFT) {
velocity = 100;
}
}