Despatx 234 || 935 421 484
mail

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

PROGRAMACIÓN: CONCEPTOS || MASTER EN ARTES DIGITALES

Sección 8: Arrays

1. Arrays
2. Arrays y loops
3. Ejemplos
4. PRACTICA

 


1.- Arrays
//creamos un array de enteros llamado listaPosiciones:
int[] listaPosiciones = { 14, 94, 120, 80 };
    
listaPosiciones[2]
//creamos un array de enteros llamada listaPosiciones:
int[] listaPosiciones = { 14, 94, 120, 80 };
//e imprimimos un par de sus valores a la consola:
println(listaPosiciones[0]);
println(listaPosiciones[3]);
//creamos un array de enteros llamada listaPosiciones: 
int[] listaPosiciones = { 14, 94, 120, 80 };
size(200,200); 
// y dibujamos cuatro de elipses según el array:
ellipse(listaPosiciones[0], 100,25,25);
ellipse(listaPosiciones[1], 100,25,25);
ellipse(listaPosiciones[2], 100,25,25);
ellipse(listaPosiciones[3], 100,25,25);

 

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

// pasan cosas...
//y cambio:
listaPosiciones[0] = 99;

println(listaPosiciones[0]);

 

En la sección de ejemplos se puede ver otra manera de declarar un array, que consiste en especificar el tamaño del mismo pero no el valor de lo que contiene:

//para un array de ints con 13 valors:
int[] unArray = new int[13];

 

Luego, a cada una de las posiciones del array que hemos creado, podemos asignar un valor tal y como lo hacemos con las variables normales (cosa que de hecho puede hacerse también para luego cambiar los valores, igual que en el caso de crear el array tal y como vimos en el primer ejemplo):

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

Para arrays grandes, este sistema mucho más eficiente en la mayoría de casos.


 

2.- Arrays y loops
int[] listaPosiciones = { 14, 94, 120, 80 };
size(200,200); 
// y dibujamos las elipses via loop:
  for(int i=0; i<4; i++){
	 ellipse(listaPosiciones[i], 100,25,25);
 }
int[] listaPosiciones = { 14, 25, 39, 64, 94, 109, 122, 150, 170, 178, 190 };
size(200,200); 
// y dibujamos las elipses via loop:
  for(int i=0; i<11; i++){
	 ellipse(listaPosiciones[i], 100,25,25);
  }

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

 

float[] listaPosiciones = new float[13];

size(200,200); 
// creamos aleatoriamente todas las posiciones:
  for(int i=0; i<13; i++){
	 listaPosiciones[i] = random(0,200);
  }
// y dibujamos las elipses via loop:
  for(int i=0; i<13; i++){
	 ellipse(listaPosiciones[i], 100,25,25);
  }

 

3.- Ejemplos
for(int i = 0; i<numeroBolas; i++){
posicionesX[i] = width/2;
posicionesY[i] = height/2;
velocidadesX[i] = random(2,6);
velocidadesY[i] = random(2,6);
}

Iniciamos una serie de posiciones en el eje X e Y en el punto medio del applet, y unas velocidades X e Y entre 2 y 6. Los cuatro arrays con los que trabajamos aquí son de floats.

Una vez hecho esto, sin cambiar casi nada el código del ejemplo con una sola pelota, podemos multiplicar los elementos que afectamos. Así, dentro del DRAW:

//iniciamos un bucle para que realize la acción para todos los
//elementos del array:
  for(int i = 0; i<numeroBolas; i++){
  //actualitzamos las posiciones
      posicionesX[i] += velocidadesX[i];
      posicionesY[i] += velocidadesY[i];
      //comprobamos los bordes X
        if((posicionesX[i]<0)||(posicionesX[i]>width)){
          velocidadesX[i] = -velocidadesX[i];
        } 
      //comprobamos los bordes Y 
        if((posicionesY[i]<0)||(posicionesY[i]>height)){
          velocidadesY[i] = -velocidadesY[i]; 
        }  
  } 
  //acabado el proceso, creamos otro bucle
  //donde dibujamos las elipses: 
  for(int i = 0; i<numeroBolas; i++){ 
    ellipse(posicionesX[i],posicionesY[i],sz,sz); 
  }

 

El ejemplo completo de las multibolas está aquí:

Your browser does not support the canvas tag.

Source code: arraybball

 

También podemos añadir colorines, y encima un "reset" utilizando una función de sistema: el mousePressed:

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

MousePressed es una función que hay que colocar fuera del setup y del draw, ya que se ejecuta independientemnte de estos procesos.

Podéis mirar colorMode() para entender cómo se utiliza en el ejemplo el color, y el ejemplo de las bolas con colorines aquí:

Your browser does not support the canvas tag.

Source code: arraybballcolors

Otro ejemplo, un poco más complejo, pero que sirve para introducir el uso del texto: la frase:

Your browser does not support the canvas tag.

Source code: texttext


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

Your browser does not support the canvas tag.