Joan Soler-Adillon || Tutorial de Processing
Despatx 52.803 (Campus de la comunicació, UPF) || 93 542 1238
----------------------------------------------------------------
----------------------------------------------------------------
TUTORIAL DE PROCESSING || Secció 5: Condicionals (2)
1. ... i més exemples de condicionals
Los condicionales avaluen una condició (allò que hi ha entre parèntesis) i executen o no el codi entre claus segons si la condició es compleix o no.
En aquest altre exemple el color de stroke i fill del quadre canvia, via condicionals, segons la posició del ratolí. Utilizem l'if, else:
Source code: quad1
//primer lliguem el FILL a l'eix horitzontal del mouse if(mouseX < width/2){ //si el mouse està al cantó esquerre... fill(255,0,0); //preparamos un fill rojo } else { //si està a la dreta fill(0,255,0); //preparamos un fill verde }//i segon, fem que l'STROKE depengui de l'eix vertical del mouse if(mouseY < height/2){ //si el mouse està a la part de dalt stroke(255,255,0); //preparem un stroke groc } else { //si està cap a baix stroke(0,0,255); //preparem un stroke blau }
A l'exemple que segueix, un if, else que ens serviex perr dibuixar un globus, que estara`o no creixent, o bé un quadre vermell si ha explotat.
També en aquest exemple veurem una nova variable de sistema: mousePressed, que, com indica el seu nom, ens diu si el mouse s'està clicant o no el ratolí. Pertany al tipus de dades booleanes.
Source code: pinxo
if(sz/2 > (width/2)-midaPinxo){ //com que ha tocat la punxa, dibuixem el recuadre vermell: fill(255,0,0); rect(0,0,width,height); } else { //com que no el toca, dibuixem la bola //primer el globus //sense stroke noStroke(); ellipse(width/2,height/2,sz,sz); println(sz); }
Y un més, encara: Tornem a l'estimada bola que rebota, però ara amb un obstacle. Un simple if ens permet saber si la bola toca o no l'obstacle. Això sí, amb la inestimable ajuda d'abs(), que converteix qualsevol número (positiu o negatiu) en el seu valor absoluto (es decir, sempre positiu).
Source code: bballObs
//comprovem OBSTACLE: if(abs(posX-obstacleX) < sz/2){ velX = -velX; }
---------------------------------------------------------------------------------------