dmt-mint.bitcoinwhitepaper#75,060,797tapdmt-mint.bitcoinwhitepaper#75,060,796tapdmt-mint.bitcoinwhitepaper#75,060,795tapdmt-mint.bitcoinwhitepaper#75,060,794tapdmt-mint.bitcoinwhitepaper#75,060,793tapdmt-mint.bitcoinwhitepaper#75,060,792tapdmt-mint.bitcoinwhitepaper#75,060,791tapdmt-mint.bitcoinwhitepaper#75,060,790tapdmt-mint.bitcoinwhitepaper#75,060,789tapdmt-mint.bitcoinwhitepaper#75,060,788tapdmt-mint.bitcoinwhitepaper#75,060,787tapdmt-mint.bitcoinwhitepaper#75,060,786tapdmt-mint.bitcoinwhitepaper#75,060,785tapdmt-mint.bitcoinwhitepaper#75,060,784tapdmt-mint.bitcoinwhitepaper#75,060,783tapdmt-mint.bitcoinwhitepaper#75,060,782tapdmt-mint.bitcoinwhitepaper#75,060,781tapdmt-mint.bitcoinwhitepaper#75,060,780tapdmt-mint.bitcoinwhitepaper#75,060,779tapdmt-mint.bitcoinwhitepaper#75,060,778tapdmt-mint.bitcoinwhitepaper#75,060,777tapdmt-deploy.bitcoinwhitepaper#75,060,500tapbitcoinwhitepaper.20081031.16.element#75,060,379text<!DOCTYPE html> <html> <head> <script src="/content/b6a50f5ba932b0ea7f652d9d28e59eced47bc6f8376c25e02d8b3457bb60ac8fi0"></script> <!-- artwork by @dmtbillythecats --> <style> body { margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; height: 100%; background-color: #f0f0f0; overflow: auto; } #controls { width: 100%; background-color: rgba(255, 255, 255, 0.8); box-sizing: border-box; z-index: 10; position: absolute; top: 0; } #canvas-container { flex: 1; width: 100%; height: 100%; } canvas { display: block; } </style> </head> <body> <div id="controls"> <input id="blk" type="number" placeholder="Enter block number" style="display: none;" /> </div> <div id="canvas-container"></div> <script> let canvas; let blockNumber = 1; let scaleFactor = 1; let btcColor; function setup() { let canvasSize = min(windowWidth, windowHeight); canvas = createCanvas(canvasSize, canvasSize); canvas.parent('canvas-container'); noLoop(); generateArt(); document.getElementById('blk').value = blockNumber; document.getElementById('blk').addEventListener('input', updateArt); window.addEventListener('resize', resize, true); resize(); let mintText = document.getElementById('preview').getAttribute('mint'); if (mintText.includes('MINT_INSCRIPTION_ID')) { let input = document.getElementById('blk'); input.style.display = 'block'; input.style.position = 'absolute'; input.style.fontSize = '10px'; input.style.margin = '1px'; input.style.top = '0'; input.value = blockNumber; input.addEventListener('input', () => { blockNumber = parseInt(input.value) || 1; updateArt(); }); updateArt(); } else { const request = new XMLHttpRequest(); try { request.open('GET', '/content/' + mintText); request.responseType = 'text'; request.addEventListener('load', () => initialize(request.response)); request.addEventListener('error', () => console.error('XHR error')); request.send(); } catch (error) { console.error(`XHR error ${error}`); } } } function initialize(result) { if (result) { try { console.log('Result', result); const data = JSON.parse(result); blockNumber = data.blk; updateArt(); } catch (error) { console.error('JSON parsing error', error); } } } function updateArt() { blockNumber = parseInt(document.getElementById('blk').value) || 1; btcColor = getColorFromBlockNumber(blockNumber); generateArt(); } function resize() { let canvasSize = min(windowWidth, windowHeight); resizeCanvas(canvasSize, canvasSize); const root = document.getElementById('canvas-container'); root.style.width = window.innerWidth - 300 + 'px'; root.style.height = window.innerHeight + 'px'; const orgWidth = 300; const orgHeight = 300; let scaleW = window.innerWidth / orgWidth; let scaleH = window.innerHeight / orgHeight; let offsetX = 0; let offsetY = 0; if (scaleH < scaleW) { scaleW = scaleH; offsetX = (window.innerWidth - orgWidth * scaleW) / 2; } else { scaleH = scaleW; offsetY = (window.innerHeight - orgHeight * scaleH) / 2; } canvas.style.zoom = scaleW; scaleFactor = Math.min(width / 1000, height / 1000); redraw(); updateArt(); } function generateArt() { clear(); let bgColor = color(220, 220, 220); background(bgColor); btcColor = getColorFromBlockNumber(blockNumber); NotebookCover(width / 2, height / 2, width * 0.7, height * 0.85); Title(width / 2, height * 0.25); BitcoinLogo(width / 2, height * 0.45, width * 0.2); TextDetails(width / 2, height * 0.6); DecorativeElements(); CanvasBorder(); DecorativeBorders(); } function getColorFromBlockNumber(blockNumber) { let r = (blockNumber * 37) % 256; let g = (blockNumber * 73) % 256; let b = (blockNumber * 97) % 256; return color(r, g, b); } function DecorativeBorders() { stroke(100, 100, 100); strokeWeight(2); noFill(); line(width * 0.1, height * 0.1, width * 0.9, height * 0.1); line(width * 0.1, height * 0.1, width * 0.1, height * 0.9); line(width * 0.9, height * 0.1, width * 0.9, height * 0.9); line(width * 0.1, height * 0.9, width * 0.9, height * 0.9); } function CanvasBorder() { noFill(); stroke(255, 165, 0); // Orange strokeWeight(75); rect(0, 0, width, height); } function NotebookCover(x, y, w, h) { noStroke(); fill(0, 0, 0, 30); rect(x - w/2 + 10, y - h/2 + 10, w, h, 10); fill(255); stroke(100); strokeWeight(2); rect(x - w/2, y - h/2, w, h, 10); fill(200); noStroke(); rect(x - w/2 - 10, y - h/2, 20, h, 5); let ringCount = 12; let ringSpacing = h / (ringCount + 1); for (let i = 0; i < ringCount; i++) { let ringY = y - h / 2 + ringSpacing * (i + 1); BindingRing(x - w/2 - 10, ringY, ringSpacing * 0.6); } let lineSpacing = h / 25; stroke(200); strokeWeight(1); for (let i = 0; i < 25; i++) { let lineY = y - h / 2 + lineSpacing * (i + 1); line(x - w / 2 + 30, lineY, x + w / 2 - 30, lineY); } } function BindingRing(x, y, size) { stroke(100); strokeWeight(2); fill(220); ellipse(x, y, size, size * 1.2); } function Title(x, y) { textAlign(CENTER, CENTER); textSize(width * 0.04); fill(50); noStroke(); textStyle(BOLD); text("Bitcoin:", x, y - 20); textSize(width * 0.035); textStyle(NORMAL); text("A Peer-to-Peer Electronic", x, y + 10); text("Cash System", x, y + 40); } function BitcoinLogo(x, y, size) { push(); translate(x, y); rotate(-PI/12); fill(0, 0, 0, 50); noStroke(); ellipse(5, 5, size * scaleFactor, size * scaleFactor); fill(btcColor); noStroke(); ellipse(0, 0, size * scaleFactor, size * scaleFactor); fill(255); textSize(size * 0.8 * scaleFactor); textAlign(CENTER, CENTER); textStyle(BOLD); text('\u20BF', 0, size * 0.05 * scaleFactor); pop(); } function TextDetails(x, y) { textAlign(CENTER, TOP); textSize(width * 0.025); fill(80); let textDetails = [ "By Satoshi Nakamoto", "Published: October 31, 2008", "20081031" ]; let yOffset = y; let lineHeight = height * 0.05; for (let i = 0; i < textDetails.length; i++) { text(textDetails[i], x, yOffset); yOffset += lineHeight; } } function DecorativeElements() { stroke(200); strokeWeight(1); noFill(); let circleCount = 8; let circleSize = width * 0.03; let startX = width * 0.1; let endX = width * 0.9; let y = height * 0.85; for (let i = 0; i < circleCount; i++) { let x = map(i, 0, circleCount - 1, startX, endX); ellipse(x, y, circleSize); if (i < circleCount - 1) { line(x + circleSize/2, y, x + (endX - startX)/(circleCount-1) - circleSize/2, y); } } } window.addEventListener('load', setup); </script> <script id="preview" mint="MINT_INSCRIPTION_ID"></script> </body> </html>#75,060,284textdmt-mint.vlao#74,928,543tapdmt-mint.hiros#74,374,857tapdmt-mint.bitmapbirthday#74,368,477tapdmt-mint.bitmapbirthday#74,368,476tapdmt-mint.bitmapbirthday#74,368,475tapdmt-mint.bitmapbirthday#74,368,474tapdmt-mint.bitmapbirthday#74,368,473tapdmt-mint.bitmapbirthday#74,368,472tapdmt-mint.bitmapbirthday#74,368,471tapdmt-mint.bitmapbirthday#74,368,470tapdmt-mint.bitmapbirthday#74,368,469tapdmt-mint.bitmapbirthday#74,368,468tapdmt-mint.bitmapbirthday#74,368,467tapdmt-mint.bitmapbirthday#74,368,466tapdmt-deploy.bitmapbirthday#74,368,237tap<!DOCTYPE html> <html> <head> <script src="/content/b6a50f5ba932b0ea7f652d9d28e59eced47bc6f8376c25e02d8b3457bb60ac8fi0"></script> <style> body { margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; height: 100%; background-color: #f0f0f0; overflow: auto; } #controls { width: 100%; background-color: rgba(255, 255, 255, 0.8); box-sizing: border-box; z-index: 10; position: absolute; top: 0; } #canvas-container { flex: 1; width: 100%; height: 100%; } canvas { display: block; } </style> </head> <body> <div id="controls"> <input id="blockNumberInput" type="number" placeholder="Enter block number" style="display: none;" /> </div> <div id="canvas-container"></div> <script> let canvas; let blockNumber = 1; let currentP5Instance = null; let scaleFactor = 1; const colors = [ '#000000', '#c8b7e3', '#f5aab6', '#f4a261', '#fa8072', '#87ceeb', '#ffe082' ]; const balloonColors = [ '#FFB6C1', '#FFDDC1', '#D3F9D8', '#B3E5FC', '#E1BEE7', '#FFAB91', '#FFE082', '#F48FB1' ]; function setup() { let canvasSize = min(windowWidth, windowHeight); canvas = createCanvas(canvasSize, canvasSize); canvas.parent('canvas-container'); noLoop(); generateColors(); generateArt(); document.getElementById('blockNumberInput').value = blockNumber; document.getElementById('blockNumberInput').addEventListener('input', updateArt); window.addEventListener('resize', resize, true); resize(); let mintText = document.getElementById('preview').getAttribute('mint'); if (mintText.includes('MINT_INSCRIPTION_ID')) { let input = document.getElementById('blockNumberInput'); input.style.display = 'block'; input.style.position = 'absolute'; input.style.fontSize = '10px'; input.style.margin = '1px'; input.style.top = '0'; input.value = blockNumber; input.addEventListener('input', () => { blockNumber = parseInt(input.value) || 1; updateArt(); }); updateArt(); } else { const request = new XMLHttpRequest(); try { request.open('GET', '/content/' + mintText); request.responseType = 'text'; request.addEventListener('load', () => initialize(request.response)); request.addEventListener('error', () => console.error('XHR error')); request.send(); } catch (error) { console.error(`XHR error ${request.status}`); } } } function initialize(result) { if (result) { console.log('Result', result); const data = JSON.parse(result); blockNumber = data.blk; } updateArt(); } function resize(event) { let canvasSize = min(windowWidth, windowHeight); canvas = createCanvas(canvasSize, canvasSize); const root = document.getElementById('canvas-container'); root.style.width = window.innerWidth - 300 + 'px'; root.style.height = window.innerHeight + 'px'; const orgWidth = 300; const orgHeight = 300; let scaleW = window.innerWidth / orgWidth; let scaleH = window.innerHeight / orgHeight; let offsetX = 0; let offsetY = 0; if (scaleH < scaleW) { scaleW = scaleH; offsetX = (window.innerWidth - orgWidth * scaleW) / 2; } else { scaleH = scaleW; offsetY = (window.innerHeight - orgHeight * scaleH) / 2; } canvas.style.zoom = scaleW; scaleFactor = Math.min(width / 1000, height / 1000); redraw(); updateArt(); } function updateArt() { generateColors(); generateArt(); } function generateColors() { let colorIndex = (blockNumber - 1) % colors.length; background(colors[colorIndex]); balloons.forEach(balloon => { balloon.color = getRandomBalloonColor(); }); } function generateArt() { Stars(); Rainbow(); BirthdayCake(width / 2, height / 1.5, min(width, height) / 2); updateBalloonColors(); drawBalloons(); BirthdayCard(width / 2, height / 1.15, min(width, height) * 0.3); } function BirthdayCard(x, y, size) { let cardWidth = size; let cardHeight = size * 0.6; fill('#ff8c00'); rectMode(CENTER); rect(x, y, cardWidth, cardHeight, 20); stroke(082, 193); strokeWeight(20); noFill(); rect(x, y, cardWidth, cardHeight, 20); textAlign(CENTER, CENTER); textStyle(BOLD); fill(255); noStroke(); let textSizeTop = cardWidth * 0.1; let textSizeMiddle = cardWidth * 0.15; let textSizeBottom = cardWidth * 0.1; textSize(textSizeTop); text("Happy Birthday!", x, y - cardHeight * 0.2); textSize(textSizeMiddle); text("Bitmap", x, y); textSize(textSizeBottom); text("2023-06-01", x, y + cardHeight * 0.2); } function updateBalloonColors() { balloons = [ { x: 0.15, y: 0.2, size: 80, color: getRandomBalloonColor() }, { x: 0.85, y: 0.2, size: 100, color: getRandomBalloonColor() }, { x: 0.85, y: 0.7, size: 70, color: getRandomBalloonColor() }, { x: 0.15, y: 0.7, size: 90, color: getRandomBalloonColor() } ]; } function getRandomBalloonColor() { return balloonColors[Math.floor(Math.random() * balloonColors.length)]; } let balloons = [ { x: 0.15, y: 0.2, size: 80, color: getRandomBalloonColor() }, { x: 0.85, y: 0.2, size: 100, color: getRandomBalloonColor() }, { x: 0.85, y: 0.7, size: 70, color: getRandomBalloonColor() }, { x: 0.15, y: 0.7, size: 90, color: getRandomBalloonColor() } ]; function drawBalloons() { for (let balloon of balloons) { let x = balloon.x * width; let y = balloon.y * height; let size = balloon.size * Math.min(width, height) / 1000; let color = balloon.color || getRandomBalloonColor(); drawBalloon(x, y, size, color); drawBitcoinLogo3(x, y, size * 0.6); } } function drawBalloon(x, y, size, color) { fill(color); noStroke(); ellipse(x, y, size, size * 1.2); fill('#333'); ellipse(x, y + size * 1.2 / 2, size * 0.2, size * 0.2); stroke('#333'); strokeWeight(2); line(x, y + size * 1.2 / 2, x, y + size * 1.2 + 50 * Math.min(width, height) / 1000); } function BirthdayCake(x, y, size) { size *= 1.5; let cakeBaseWidth = size * 0.6; let cakeBaseHeight = size * 0.2; let cakeMiddleWidth = cakeBaseWidth * 0.85; let cakeMiddleHeight = cakeBaseHeight * 0.85; let cakeTopWidth = cakeMiddleWidth * 0.85; let cakeTopHeight = cakeMiddleHeight * 0.85; let cakeLayerHeight = cakeBaseHeight * 0.3; let frostingHeight = cakeLayerHeight * 0.6; let candleHeight = cakeLayerHeight * 2; let candleWidth = cakeBaseWidth * 0.07; let scaleFactor = cakeBaseWidth / 15; let baseColor = color(255, 192, 203); let middleColor = color(173, 216, 230); let topColor = color(144, 238, 144); noStroke(); fill(baseColor); rectMode(CENTER); rect(x, y, cakeBaseWidth, cakeBaseHeight, 20); fill(middleColor); rect(x, y - cakeBaseHeight / 2 - cakeMiddleHeight / 2 + frostingHeight / 2, cakeMiddleWidth, cakeMiddleHeight, 20); fill(topColor); rect(x, y - cakeBaseHeight - cakeMiddleHeight / 2 - cakeTopHeight / 2 + frostingHeight / 2, cakeTopWidth, cakeTopHeight, 20); drawFrosting(x, y - cakeBaseHeight / 2, cakeBaseWidth, frostingHeight, 0.5); drawFrosting(x, y - cakeBaseHeight - cakeMiddleHeight / 2, cakeMiddleWidth, frostingHeight, 0.3); drawFrosting(x, y - cakeBaseHeight - cakeMiddleHeight - cakeTopHeight / 2, cakeTopWidth, frostingHeight, 0.3); for (let i = -2; i <= 2; i++) { drawCandle(x + i * candleWidth * 2, y - cakeBaseHeight - cakeMiddleHeight - cakeTopHeight / 2 - frostingHeight / 2, candleWidth, candleHeight); } drawCakeDecorations(x, y - cakeBaseHeight / 2, cakeBaseWidth, cakeBaseHeight); drawCakeDecorations(x, y - cakeBaseHeight - cakeMiddleHeight / 2, cakeMiddleWidth, cakeMiddleHeight); drawCakeDecorations(x, y - cakeBaseHeight - cakeMiddleHeight - cakeTopHeight / 2, cakeTopWidth, cakeTopHeight); let gridSize = scaleFactor; drawBitmap3x3( x - cakeBaseWidth / 10 + gridSize / 2, y + cakeBaseHeight / 35 - gridSize / 2 + 1, gridSize, gridSize, 2 ); } function drawFrosting(x, y, width, height, dripFactor) { fill(255, 250, 250); beginShape(); vertex(x - width / 2, y); for (let i = -width / 2; i <= width / 2; i += width / 12) { let drip = height + random(-height * dripFactor, height * dripFactor); vertex(x + i, y + drip); } vertex(x + width / 2, y); endShape(CLOSE); } function drawCandle(x, y, candleWidth, candleHeight) { let gridWidth = candleWidth; let gridHeight = candleHeight / 3; let cornerRadius = 2; let borderColor = '#000000'; let borderWidth = 2; for (let i = 0; i < 3; i++) { fill(255, 165, 0); stroke(borderColor); strokeWeight(borderWidth); rect(x - gridWidth / 25, y - candleHeight / 2 + i * gridHeight, gridWidth, gridHeight, cornerRadius); } noStroke(); fill(255, 223, 0); ellipse(x, y - candleHeight, candleWidth * 0.8, candleWidth * 1.2); fill(255, 69, 0); ellipse(x, y - candleHeight - candleWidth * 0.1, candleWidth * 0.5, candleWidth * 0.7); } function drawCakeDecorations(x, y, cakeWidth, cakeHeight) { let sprinkleColors = [color(255, 105, 180), color(255, 182, 193), color(255, 165, 0), color(144, 238, 144), color(173, 216, 230)]; for (let i = 0; i < 20; i++) { fill(random(sprinkleColors)); let sprinkleX = random(x - cakeWidth / 2 + 10, x + cakeWidth / 2 - 10); let sprinkleY = random(y - cakeHeight / 2 + 10, y + cakeHeight / 2 - 10); ellipse(sprinkleX, sprinkleY, random(5, 10), random(5, 10)); } for (let i = 0; i < 15; i++) { fill(random(200, 255), random(100, 200), random(150, 250)); let dotX = random(x - cakeWidth / 2 + 20, x + cakeWidth / 2 - 20); let dotY = random(y - cakeHeight / 2 + 20, y + cakeHeight / 2 - 20); ellipse(dotX, dotY, random(5, 1)); } } function drawBitmap3x3(x, y, cellWidth, cellHeight, borderSize) { let borderColor = '#000000'; let cellColor = '#FFA500'; noStroke(); noFill(); for (let row = 0; row < 3; row++) { for (let col = 0; col < 3; col++) { let cellX = x + col * (cellWidth + borderSize); let cellY = y + row * (cellHeight + borderSize); fill(cellColor); rect(cellX, cellY, cellWidth, cellHeight); stroke(borderColor); strokeWeight(borderSize); noFill(); rect(cellX, cellY, cellWidth, cellHeight); } } } function Rainbow() { let colors = [ color(148, 0, 211), color(75, 0, 130), color(0, 0, 255), color(0, 255, 0), color(255, 255, 0), color(255, 127, 0), color(255, 0, 0) ]; let startX = width / 2; let startY = height * 0.9; let radius = Math.min(width, height) * 0.6; let arcWidth = radius * 0.015; noStroke(); for (let i = 0; i < colors.length; i++) { stroke(colors[i]); strokeWeight(arcWidth); noFill(); arc(startX, startY, radius * 2, radius * 2, PI, 0, OPEN); radius -= arcWidth; } } function Stars() { fill(255); noStroke(); for (let i = 0; i < 100; i++) { let x = random(width); let y = random(height); ellipse(x, y, 2, 2); } } function drawBitcoinLogo3(x, y, size) { noStroke(); fill('#f7931a'); ellipse(x, y, size, size); fill(255); textSize(size * 0.6); textAlign(CENTER, CENTER); text('\u20BF', x, y); } window.addEventListener('load', setup); </script> <script id="preview" mint="MINT_INSCRIPTION_ID"></script> </body> </html>#74,367,915textbitmapbirthday.20230601.16.element#74,348,274textdmt-mint.halvingone#73,781,647tapdmt-deploy.pizzaday#73,752,671tap<!DOCTYPE html> <html> <head> <script src="/content/b6a50f5ba932b0ea7f652d9d28e59eced47bc6f8376c25e02d8b3457bb60ac8fi0"></script> <style> body { margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; height: 100vh; background-color: #f0f0f0; overflow: auto; } #controls { width: 100%; background-color: rgba(255, 255, 255, 0.8); padding: 10px; box-sizing: border-box; z-index: 10; } #controls input { font-size: 16px; padding: 5px; } #canvas-container { flex: 1; width: 100%; display: flex; justify-content: flex-start; align-items: flex-start; position: relative; padding: 10px; } canvas { border: 1px solid #ccc; display: block; } </style> </head> <body> <div id="controls"> <input id="blockNumberInput" type="number" placeholder="Enter block number" /> </div> <div id="canvas-container"></div> <script> let canvas; let blockNumber = 1; const colors = [ '#000000', '#f3d9c2', '#c8b7e3', '#f5aab6', '#d3c6e0', '#f4a261', '#fa8072', '#98fb98', '#87ceeb', '#ffb6c1' ]; function setup() { canvas = createCanvas(600, 600); canvas.parent('canvas-container'); noLoop(); document.getElementById('blockNumberInput').value = blockNumber; generateArt(); window.addEventListener('resize', resize, true); resize(); document.getElementById('blockNumberInput').addEventListener('input', updateArt); } function updateArt() { blockNumber = parseInt(document.getElementById('blockNumberInput').value, 10) || 290304; generateArt(); } function resize() { const root = document.getElementById('canvas-container'); root.style.width = window.innerWidth - 300 + 'px'; root.style.height = window.innerHeight + 'px'; const orgWidth = 600; const orgHeight = 600; let scaleW = window.innerWidth / orgWidth; let scaleH = window.innerHeight / orgHeight; let offsetX = 0; let offsetY = 0; if (scaleH < scaleW) { scaleW = scaleH; offsetX = (window.innerWidth - orgWidth * scaleW) / 2; } else { scaleH = scaleW; offsetY = (window.innerHeight - orgHeight * scaleH) / 2; } canvas.style.zoom = scaleW; scaleFactor = Math.min(width / 1000, height / 1000); redraw(); } function generateColors() { let colorIndex = (blockNumber - 1) % colors.length; background(colors[colorIndex]); } function generateArt() { clear(); generateColors(); if (blockNumber % 2 !== 0) { let positions = [ { x: 50, y: 50, size: 40 }, { x: 550, y: 50, size: 40 }, { x: 50, y: 550, size: 40 }, { x: 550, y: 550, size: 40 } ]; for (let pos of positions) { drawBitcoinLogo2(pos.x, pos.y, pos.size); } } if (blockNumber % 2 === 0) { let positions = [ { x: 50, y: 50, size: 40 }, { x: 550, y: 50, size: 40 }, { x: 50, y: 550, size: 40 }, { x: 550, y: 550, size: 40 } ]; for (let pos of positions) { drawBitcoinLogo3(pos.x, pos.y, pos.size); } } drawPizza(300, 300); drawStars(); } function drawStars() { fill(255); noStroke(); for (let i = 0; i < 100; i++) { let x = random(width); let y = random(height); ellipse(x, y, 2, 2); } } function drawPizza(x, y) { let pizzaSize = 300; let crustThickness = 30; let sauceColor = '#d9534f'; let cheeseColor = '#ffeb3b'; let oliveColor = '#000'; let pepperoniColor = '#d9534f'; let greenPepperColor = '#4caf50'; let mushroomColor = '#9e9e9e'; let onionColor = '#f5f5f5'; let baconColor = '#e57373'; let pineappleColor = '#f7e2a6'; let redPepperColor = '#c62828'; let btcSize = 50; fill('#f4a261'); noStroke(); ellipse(x, y, pizzaSize, pizzaSize); // Draw sauce fill(sauceColor); ellipse(x, y, pizzaSize - crustThickness, pizzaSize - crustThickness); // Draw cheese fill(cheeseColor); ellipse(x, y, pizzaSize - crustThickness * 2, pizzaSize - crustThickness * 2); stroke('#f4a261'); strokeWeight(10); line(x, y, x + pizzaSize / 2, y); line(x, y, x, y + pizzaSize / 2); line(x, y, x - pizzaSize / 2, y); line(x, y, x, y - pizzaSize / 2); fill(pepperoniColor); noStroke(); ellipse(x - 80, y - 80, 30, 30); ellipse(x + 80, y - 80, 30, 30); ellipse(x - 80, y + 80, 30, 30); ellipse(x + 80, y + 80, 30, 30); fill(greenPepperColor); beginShape(); vertex(x - 60, y - 60); vertex(x - 40, y - 80); vertex(x - 20, y - 60); vertex(x - 40, y - 40); endShape(CLOSE); beginShape(); vertex(x + 60, y - 60); vertex(x + 40, y - 80); vertex(x + 20, y - 60); vertex(x + 40, y - 40); endShape(CLOSE); fill(mushroomColor); ellipse(x - 60, y - 20, 25, 20); ellipse(x + 60, y - 20, 25, 20); ellipse(x, y + 60, 25, 20); fill(oliveColor); ellipse(x - 70, y + 70, 15, 15); ellipse(x + 70, y - 70, 15, 15); ellipse(x - 30, y - 30, 15, 15); ellipse(x + 30, y + 30, 15, 15); fill(onionColor); ellipse(x - 40, y + 40, 20, 10); ellipse(x + 40, y - 40, 20, 10); fill(baconColor); beginShape(); vertex(x - 80, y - 80); vertex(x - 60, y - 100); vertex(x - 20, y - 80); vertex(x - 40, y - 60); endShape(CLOSE); beginShape(); vertex(x + 80, y - 80); vertex(x + 60, y - 100); vertex(x + 20, y - 80); vertex(x + 40, y - 60); endShape(CLOSE); fill(pineappleColor); beginShape(); vertex(x - 40, y - 60); vertex(x - 20, y - 80); vertex(x, y - 60); vertex(x - 20, y - 40); endShape(CLOSE); beginShape(); vertex(x + 40, y - 60); vertex(x + 20, y - 80); vertex(x, y - 60); vertex(x + 20, y - 40); endShape(CLOSE); fill(redPepperColor); ellipse(x - 70, y + 70, 15, 15); ellipse(x + 70, y - 70, 15, 15); stroke('#f4a261'); strokeWeight(5); noFill(); ellipse(x, y, pizzaSize + 10, pizzaSize + 10); drawBitcoinLogo(x, y, pizzaSize * 0.25); } function drawBitcoinLogo(x, y, size) { fill('#f7931a'); noStroke(); ellipse(x, y, size, size); fill('#ffffff'); textSize(size * 0.8); textAlign(CENTER, CENTER); text('\u20BF', x, y); } function drawBitcoinLogo2(x, y, size) { fill('#00aaff'); noStroke(); ellipse(x, y, size, size); fill('#ffffff'); textSize(size * 0.8); textAlign(CENTER, CENTER); text('\u20BF', x, y); } function drawBitcoinLogo3(x, y, size) { fill('#000000'); noStroke(); ellipse(x, y, size, size); fill('#ffffff'); textSize(size * 0.8); textAlign(CENTER, CENTER); text('\u20BF', x, y); } </script> </body> </html>#73,752,249text.opnet#73,455,382text.fractalbitcoin#73,455,041textdmt-mint.hfinney#73,437,788tapdmt-mint.grok42#73,427,538tapdmt-mint.moonlanding#73,112,630tapdmt-mint.moonlanding#73,112,629tapdmt-mint.moonlanding#73,112,628tapdmt-mint.moonlanding#73,112,627tapdmt-mint.moonlanding#73,112,626tapdmt-mint.moonlanding#73,112,625tapdmt-mint.moonlanding#73,112,624tapdmt-mint.moonlanding#73,112,623tapdmt-mint.moonlanding#73,112,622tapdmt-mint.moonlanding#73,112,621tapdmt-mint.moonlanding#73,112,620tapdmt-mint.moonlanding#73,112,619tap