Mitä sitä selittelemään - tollanen: https://petke.info/artomatic/
<!DOCTYPE html> <html> <head> <title>Papart</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Arvo:ital@1&display=swap" rel="stylesheet"> <style> #lause { font-family: Arvo; font-size: 20px; } #canvas-container { position: relative; } body { display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } canvas { border: 1px solid black; } #button-container { position: absolute; bottom: 100; left: 100; } #my-button { padding: 10px 20px; background-color: gray; color: white; border: none; cursor: pointer; font-family: Arvo; font-size: 20px; } </style> </head> <body> <div id="canvas-container"> <div id="lause"></div> <canvas id="canvas" width="600" height="300"></canvas> <div id="button-container"> <button id="my-button" onclick="drawAndSpeak()">Click me! :)</button> </div> </div> <script src="script.js"></script> </body> </html>
function teelause() { const tekijä =["I" ,"You" ,"He" ,"She" ,"We" ,"You" ,"They" ,"It","Vincent Van Gogh", "Salvador Dali", "Pablo Picasso"]; const verbit = ["ask" ,"be" ,"become" ,"begin" ,"call" ,"can" ,"come" ,"could" ,"do" ,"feel" ,"find" ,"get" ,"give" ,"go" ,"have","hear" ,"help" ,"keep" ,"know" ,"leave" ,"let" ,"like" ,"live" ,"look" ,"make" ,"may" ,"mean" ,"might" ,"move" ,"need","play" ,"put" ,"run" ,"say" ,"see" ,"seem" ,"should" ,"show" ,"start" ,"take" ,"talk" ,"tell" ,"think" ,"try" ,"turn","use" ,"want" ,"will" ,"work" ,"would"]; const prepositiot = ["above" ,"across" ,"against" ,"along" ,"among" ,"around" ,"at" ,"before" ,"behind" ,"below" ,"beneath" ,"beside","between", "by", "down" ,"from" ,"in" ,"into" ,"near" ,"of" ,"off" ,"on" ,"to" ,"toward" ,"under" ,"upon" ,"with " ,"within"] const etusanat= ["a" ,"an" ,"the" ,"with" ,"at" ,"this" ,"his" ,"her" ,"my" ,"your" ,"our"]; const adjektiivit = ["beatiful" ,"lovely" ,"pretty" ,"nice" ,"handsome" ,"fine" ,"funky" ,"elegant" ,"classy" ,"fair" ,"jubilant" ,"creative" ,"excellent"]; const substantiivit = ["art" ,"painting" ,"exhibition" ,"pencil" ,"paintbrush" ,"paint" ,"emotion" ,"senses" ,"imagination" ,"oil paint", "color"]; let sana1= tekijä[Math.floor(Math.random()*tekijä.length)]; let sana2= verbit[Math.floor(Math.random()*verbit.length)]; let sana3= prepositiot[Math.floor(Math.random()*prepositiot.length)]; let sana4= etusanat[Math.floor(Math.random()*etusanat.length)]; let sana5= adjektiivit[Math.floor(Math.random()*adjektiivit.length)]; let sana6= substantiivit[Math.floor(Math.random()*substantiivit.length)]; let lause= sana1 + " " + sana2 + " " + sana3 + " " + sana4 + " " + sana5 + " " + sana6; console.log(tekijä.length*verbit.length*prepositiot.length*etusanat.length*adjektiivit.length*substantiivit.length); return lause; } function getRandomWord() { return words[Math.floor(Math.random() * words.length)]; // Arpoo satunnaisen sanan taulukosta } function drawAndSpeak() { //************************************************************************************ const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d'); function drawPoint(px, py, vari) { context.fillStyle = vari; context.fillRect(px, py, 1, 1); } let lause=teelause(); let x0=Math.floor(Math.random() * canvas.width); let y0=Math.floor(Math.random() * canvas.height); let x1=Math.floor(Math.random() * canvas.width); let y1=Math.floor(Math.random() * canvas.height); let x2=Math.floor(Math.random() * canvas.width); let y2=Math.floor(Math.random() * canvas.height); let x3=Math.floor(Math.random() * canvas.width); let y3=Math.floor(Math.random() * canvas.height); let x4=Math.floor(Math.random() * canvas.width); let y4=Math.floor(Math.random() * canvas.height); let x5=Math.floor(Math.random() * canvas.width); let y5=Math.floor(Math.random() * canvas.height); let x6=Math.floor(Math.random() * canvas.width); let y6=Math.floor(Math.random() * canvas.height); let x7=Math.floor(Math.random() * canvas.width); let y7=Math.floor(Math.random() * canvas.height); let x8=Math.floor(Math.random() * canvas.width); let y8=Math.floor(Math.random() * canvas.height); let x9=Math.floor(Math.random() * canvas.width); let y9=Math.floor(Math.random() * canvas.height); c0 = 0; c1 = 0; c2 = 0; const kerroinx = 0.0025; const kerroiny = 0.0025; let et0,et1; context.clearRect(0, 0, canvas.width, canvas.height); // Tyhjentää kanvaasin // Täyttää alueen for (let x = 0; x < canvas.width; x++) { for (let y = 0; y < canvas.height; y++) { xp=x0+kerroinx*x; yp=y0+kerroiny*y; et1=Math.sqrt((xp-x1)*(xp-x1)+(yp-y1)*(yp-y1)); et2=Math.sqrt((xp-x2)*(xp-x2)+(yp-y2)*(yp-y2)); et3=Math.sqrt((xp-x3)*(xp-x3)+(yp-y3)*(yp-y3)); et4=Math.sqrt((xp-x4)*(xp-x4)+(yp-y4)*(yp-y4)); et5=Math.sqrt((xp-x5)*(xp-x5)+(yp-y5)*(yp-y5)); et6=Math.sqrt((xp-x6)*(xp-x6)+(yp-y6)*(yp-y6)); et7=Math.sqrt((xp-x7)*(xp-x7)+(yp-y7)*(yp-y7)); et8=Math.sqrt((xp-x8)*(xp-x8)+(yp-y8)*(yp-y8)); et9=Math.sqrt((xp-x9)*(xp-x9)+(yp-y9)*(yp-y9)); let Ri=(xp+yp)*et1; let Gi=xp*yp+et2; let Bi=yp+et3; let c0apu = Math.floor(255*Math.cos(Math.sin(Ri))); let c1apu = Math.floor(255*Math.sin(Math.cos(Gi))+et4); let c2apu = Math.floor(255*Math.sin(Math.sin(Bi))); c0apu=(Gi+Bi)%255; c1apu=(Gi+Ri)%255; c2apu=(Bi+Ri)%255; //console.log(c0apu, c1apu, c2apu); let color = `rgba(${c0apu}, ${c1apu}, ${c2apu}, 1.0)`; if ((Ri*Gi*Bi)<(3*128*128*128)) { let Ri=(xp+yp)*et4; let Gi=(xp*yp)+et5*et2; let Bi=xp+yp+et6*et9; let c0apu = Math.floor(255*Math.cos(Math.sin(Bi))); let c1apu = Math.floor(255*Math.sin(Math.cos(Ri))); let c2apu = Math.floor(255*Math.sin(Math.sin(Gi))); c0apu=(Gi+Bi+(x*y))%255; c1apu=(Gi+Ri)%255; c2apu=(Bi+Ri)%255; let color = `rgba(${c0apu}, ${c1apu}, ${c2apu}, 1.0)`; } drawPoint(x, y, color); } } const utterance = new SpeechSynthesisUtterance(lause); utterance.lang = 'en-US'; utterance.rate = 0.8; speechSynthesis.speak(utterance); const lauseElementti = document.getElementById('lause'); lauseElementti.textContent = lause; //console.log(availableVoices); }
Aihe on jo aika vanha, joten et voi enää vastata siihen.