<!DOCTYPE html>
<html>
<head>
<title>Block-Dependent Ocean Wave Generative Art</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
</head>
<body>
<div id="app">
<input id="blockNumber" type="number" placeholder="Enter block number" style="font-size: 20px; padding: 5px;" />
<button onclick="generateArt()">Generate</button>
</div>
<script>
let yoff = 0.0;
let blockNumber = 0;
function setup() {
createCanvas(710, 400);
noLoop(); // Ensure that draw() only runs once unless explicitly called
}
function generateArt() {
blockNumber = parseInt(document.getElementById('blockNumber').value) || Math.floor(random(100000));
noiseSeed(blockNumber); // Use the block number as seed for noise generation
background(51);
let xoff = 0; // Option to reset noise detail for each frame
// Colors will change based on the block number
let colors = getColorsForBlock(blockNumber);
for (let i = 0; i < colors.length; i++) {
fill(colors[i]);
beginShape();
for (let x = 0; x <= width; x += 10) {
let y = map(noise(xoff, yoff), 0, 1, 200 + i * 20, 300 + i * 20);
vertex(x, y);
xoff += 0.05;
}
yoff += 0.01;
vertex(width, height);
vertex(0, height);
endShape(CLOSE);
}
}
function getColorsForBlock(blockNum) {
let colorSets = [
[color(25, 118, 210), color(0, 188, 212), color(0, 150, 136), color(76, 175, 80), color(255, 235, 59)],
[color(255, 87, 34), color(156, 39, 176), color(63, 81, 181), color(0, 150, 136), color(205, 220, 57)],
[color(244, 67, 54), color(233, 30, 99), color(103, 58, 183), color(3, 169, 244), color(0, 188, 212)]
];
// Choose a color set based on the block number modulus the number of sets
return colorSets[blockNum % colorSets.length];
}
</script>
</body>
</html>