/* UPF-IUA Màster d'Arts Digitals joan soler-adillon (www.joan.cat) El condicional nos permite hacer rebotar la pelota en los ejes X e Y Random() hace que cada vez las velocidades X e Y sean distintas */ float posX, posY, velX, velY; int sz = 50; int obstacleX, obstacleY; boolean tocandoObstaculo = false; boolean tocandoObstaculoPrev = false; void setup(){ size(400,400); posX = width/2; posY = height/2; velX = random(1,5); velY = random(1,5); fill(255,255,192); strokeWeight(3); smooth(); frameRate(60); } void draw(){ background(0); //comprobamos la posición X if((posX-sz/2<=0)||(posX+sz/2>=width)){ velX = -velX; } //comprobamos la posición Y if((posY-sz/2<=0)||(posY+sz/2>=height)){ velY = -velY; } //actualizamos el booleano "tocandoObstaculo": if(abs(posX-obstacleX) <= sz/2){ tocandoObstaculo = true; } else { tocandoObstaculo = false; } //COMPROBAMOS OBSTÁCULO: if(tocandoObstaculo == true){ if(tocandoObstaculoPrev != true){ velX = -velX; } } //println(abs(posX-obstacleX)); //actualizamos tocandoObstaculoPrev para el siguiente ciclo del bucle tocandoObstaculoPrev = tocandoObstaculo; //actulizamos obstáculo, según el mouse: obstacleX = mouseX; obstacleY = mouseY; //actualitzamos las posiciones posX = posX+velX; posY = posY+velY; //dibujamos noStroke(); ellipse(posX,posY,sz,sz); //dibujamos obstaculo: stroke(255,192,192); line(obstacleX,0,obstacleX,height); }