Código html (index.html):
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title>Tap n' fun</title>
<script language="javascript" type="text/javascript" src="libraries/p5.js"></script>
<script language="javascript" type="text/javascript" src="libraries/p5.sound.js"></script>
<script language="javascript" type="text/javascript" src="Tapnfun.js"></script>
</head>
<body style="text-align:center; margin:0px; padding:0px; background-color:white">
</body>
</html>
Código p5.js (Tapnfun.js):
var rojo;
var verde;
var azul;
var amarillo;
var cyan;
var magenta;
var naranja;
var gris;
var blanco;
var negro;
var mySound;
//function preload() {
// mySound = loadSound('files/Sonido_01.mp3');
//}
function setup() {
//createCanvas(window.innerWidth,window.innerHeight);
createCanvas(500,500);
rojo = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(255,0,0),0,color(0,0,0));
verde = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(0,255,0),1,color(0,0,0));
azul = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(0,0,255),2,color(255,255,255));
amarillo = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(255,255,0),3,color(0,0,0));
cyan = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(0,255,255),4,color(0,0,0));
magenta = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(255,0,255),5,color(0,0,0));
naranja = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(255,128,0),6,color(0,0,0));
gris = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(128,128,128),7,color(0,0,0));
blanco = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(255,255,255),8,color(0,0,0));
negro = new Circulo(random(width/3,2*width/3),random(height/3,2*height/3),50,random(1,3),color(0,0,0),9,color(255,255,255));
}
function draw(){
background(255,215,0);
tituloApp();
debug();
rojo.dibujar();
rojo.mover();
verde.dibujar();
verde.mover();
azul.dibujar();
azul.mover();
amarillo.dibujar();
amarillo.mover();
cyan.dibujar();
cyan.mover();
magenta.dibujar();
magenta.mover();
naranja.dibujar();
naranja.mover();
gris.dibujar();
gris.mover();
blanco.dibujar();
blanco.mover();
negro.dibujar();
negro.mover();
}
//function windowResized(){
// resizeCanvas(window.innerWidth,window.innerHeight);
//}
function mousePressed(){
rojo.tap();
verde.tap();
azul.tap();
amarillo.tap();
cyan.tap();
magenta.tap();
naranja.tap();
gris.tap();
blanco.tap();
negro.tap();
// mySound.setVolume(1);
// mySound.play();
}
function tituloApp(){
textSize(12);
fill(100);
strokeWeight(0);
textAlign(CENTER);
text('TAP `N FUN v0.03 [FEB-04-2017]',width/2,15);
text('Design & coding: Antonio Vallecillos @fotovallegrafia',width/2,30);
strokeWeight(1);
stroke(100);
line(0,40,width,40);
}
function debug(){
textSize(12);
var p = [10,25,40,55,70,85,100,115,130,145,160,175,190,205];
fill(100);
strokeWeight(0);
textAlign(LEFT);
text('Debug:',10,height-p[8]);
text('p[0] = ' + p[0],10,height-p[7]);
text('Frame Rate: ' + frameRate().toFixed(0) + ' frames per second', 10,height-p[6]);
text('width = ' + width + ' px',10,height-p[5]);
text('height = ' + height + ' px',10,height-p[4]);
text('displayWidth = ' + displayWidth + ' px',10,height-p[3]);
text('displayHeight = ' + displayHeight + ' px',10,height-p[2]);
text('window.innerWidth = ' + window.innerWidth + ' px',10,height-p[1]);
text('window.innerHeight = ' + window.innerHeight + ' px',10,height-p[0]);
}
function Circulo(extx,exty,extdiametro,extv,extcolor,extid,extidcolor) {
this.x = extx;
this.y = exty;
this.diametro = extdiametro;
this.velocidad = extv;
this.angulo = random(0,2*PI);
this.ccolor = extcolor;
this.sw = 5;
this.visible = 1;
this.borde = 0;
this.id = extid;
this.idcolor = extidcolor;
this.dibujar = function(ccolor) {
strokeWeight(this.sw);
stroke(this.borde);
fill(this.ccolor);
ellipse(this.x,this.y,this.diametro,this.diametro);
fill(this.idcolor);
stroke(this.idcolor);
textAlign(CENTER);
strokeWeight(2);
textSize(40);
text(this.id,this.x,this.y+14);
}
this.mover = function() {
if(this.x >= width-this.sw-this.diametro/2){
this.angulo = this.angulo + random(PI-PI/4, PI+PI/4);
this.x = this.x-1;
}else if(this.x <= this.sw+this.diametro/2){
this.angulo = this.angulo + random(PI-PI/4, PI+PI/4);
this.x = this.x+1;
}else if(this.y >= height-this.sw-this.diametro/2){
this.angulo = this.angulo + random(PI-PI/4, PI+PI/4);
this.y = this.y-1;
}else if(this.y <= this.sw+this.diametro/2){
this.angulo = this.angulo + random(PI-PI/4, PI+PI/4);
this.y = this.y+1;
}else{
this.angulo = this.angulo + random(-PI/16,PI/16);
this.x = this.x + cos(this.angulo)*this.velocidad;
this.y = this.y + sin(this.angulo)*this.velocidad;
}
}
this.tap = function(){
if(this.x-this.diametro/2 <= mouseX && mouseX <= this.x+this.diametro/2 && this.y-this.diametro/2 <= mouseY && mouseY <= this.y+this.diametro/2){
this.ccolor = color(255,200,0,50);
this.borde = color(0,50);
this.idcolor = color(0,50);
this.velocidad = 0;
}
}
}