Joan Soler-Adillon || Tutorial de Processing

Despatx 52.803 (Campus de la comunicació, UPF) || 93 542 1238
mail

----------------------------------------------------------------
----------------------------------------------------------------

1.- Matrius (arrays)

//creem una matriu d'enters anomenat llistaPosicions:
int[] llistaPosicions = { 14, 94, 120, 80 };
    
llistaPosicions[2]
//creem una matriu d'enters anomenat llistaPosicions:
int[] llistaPosicions = { 14, 94, 120, 80 };
//i n'imprimim un parell de valores a la consola:
println(llistaPosicions[0]);
println(llistaPosicions[3]);
//creem una matriu d'enters anomenat llistaPosicions 
int[] llistaPosicions = { 14, 94, 120, 80 };
size(200,200); 
// i dibuixem quatre elipses segons l'array:
ellipse(llistaPosicions[0], 100,25,25);
ellipse(llistaPosicions[1], 100,25,25);
ellipse(llistaPosicions[2], 100,25,25);
ellipse(llistaPosicions[3], 100,25,25);

 

int[] llistaPosicions = { 14, 94, 120, 80 };

// passen coses...
//i canviem: 
llistaPosicions [0] = 99;

println llistaPosicions[0]);

 

En la secció d'exemples es pot veure altra manera de declarar una matriu, que consisteix a especificar la mida de la mateixa però no els valors del que conté:

//per una matriu d'ints amb 13 valors:
int[] unArray = new int[13];

 

Llavors, a cadascuna de les posicions de la matriu que hem creat li podem assignar un valor tal com ho fem amb les variables normals (cosa que, de fet, pot fer-se també per a després canviar els valors, igual que en el cas de crear la matriu tal com hem vist en el primer exemple):

 

unArray[0] = 18;
unArray[2] = int(random(80));

Per arrays grans, aquest sistema resulta ser molt més eficient en la majoria de casos.


 

2.- Matrius i bucles
int[] llistaPosicions = { 14, 94, 120, 80 };
size(200,200); 
// i dibuixem les elipses via bucle:
  for(int i=0; i<4; i++){
	 ellipse(llistaPosicions[i], 100,25,25);
 }
int[] llistaPosicions = { 14, 25, 39, 64, 94, 109, 122, 150, 170, 178, 190 };
size(200,200); 
// i dibuixem les elipses via bucle:
  for(int i=0; i<11; i++){
	 ellipse(llistaPosicions[i], 100,25,25);
  }

for(int i=0; i<llistaPosicions.length; i++){

float[] llistaPosicions = new float[13];

size(200,200); 
// creem aleatoriament totes les posicions:
  for(int i=0; i<13; i++){
	 llistaPosicions[i] = random(0,200);
  }
//  i dibuixem les elipses via bucle:
  for(int i=0; i<13; i++){
	 ellipse(llistaPosicions[i], 100,25,25);
  }

 

3.- Exemples
for(int i = 0; i<numeroBolas; i++){
posicionsX[i] = width/2;
posicionsY[i] = height/2;
velocitatsX[i] = random(2,6);
velocitatsY[i] = random(2,6);
}

Iniciem una sèrie de posicions en l'eix X i Y en el punt mig de la finestra, i unes velocitats X i Y entre 2 i 6. Les quatre matrius amb els quals treballem aquí són de floats.

Un cop fet això, i sense canviar gairebé res del codi de l'exemple amb una sola pilota, podem multiplicar els elements que afectem. Així, dintre del DRAW:

 

//iniciem un bucle per tal que realitzi l'acció per tots els 
//elements de la matriu
for(int i = 0; i<numeroBoles; i++){
//actualitzem les posicions
posicionsX[i] += velocitatsX[i];
posicionsY[i] += velocitatsY[i];
//comprobem límits X
if((posicionsX[i]<0)||(posicionsX[i]>width)){
velocitatsX[i] = -velocitatsX[i];
}
//comprobem límits Y
if((posicionsY[i]<0)||(posicionsY[i]>height)){
velocitatsY[i] = -velocitatsY[i];
}
}
//acabat el procés, creem un altre bucle
//on dibuixarem les elipses
for(int i = 0; i<numeroBoles; i++){
ellipse(posicionsX[i],posicionsY[i],sz,sz);
}

 

L'exemple complet de les multiboles és aquí:

Your browser does not support the canvas tag.

Source code: arraybball

 

 

Tambié podem afegir colors, i finsi i tot un "reset" utilitzant una funció de sistema: el mousePressed:

void mousePressed(){
  //reinicialitzem les velocitats:
  for(int i = 0; i<numeroBolas; i++){
    velocidadesX[i] = random(2,10);
    velocidadesY[i] = random(2,10);
  }
}

Recordeu que MousePressed es una funció que cal colocar fora del setup i del draw, ja que s'executa independentment d'aquests dos processos.

Podeu mirar colorMode() per entendre com s'utilitza en l'exemple que segueix el color a l'exemple següent:

Your browser does not support the canvas tag.

Source code: arraybballcolors

 

Un darrer exemple, un pèl més complex, però que serveix per introduir l'ús de text:

Your browser does not support the canvas tag.

Source code: texttext

 

 

---------------------------------------------------------------------------------------

 

Your browser does not support the canvas tag.