Hasta ahora hemos visto cómo crear un arreglo y acceder a él.
Como con otras variables, una de las mejores cosas de los arreglos es la manera en que podemos cambiarlos dinámicamente mientras nuestro programa está corriendo.
Ok, déjenme mostrarles a qué me refiero.
Aquí tenemos este programa que despliega a "Hooper" sujetando algunos globos; súper lindo.
Y la manera en que funciona es que tenemos este arreglo "xPositions" que tiene dos números que nos indican la posición en la que queremos los globos.
Y luego aquí abajo tenemos este ciclo, y este ciclo recorre cada elemento del arreglo.
Y para cada uno de ellos dibuja una línea desde "x" hasta la mano de "Hooper", y luego dibuja una elipse en "x" de 30 x 40 pixeles, que es nuestro globo.
Ok, bien. Ahora que vimos cómo funciona, sabemos que si queremos otro globo, podemos agregar otro número a nuestro arreglo, ¿cierto? Algo como 300.
Hermoso. Ahora tenemos tres globos para el feliz "Hooper".
Pero digamos que queremos que el usuario, que no sabe cómo programar, pueda añadir nuevos globos.
Entonces queremos darle el programa a un usuario y decirle: "Oye, puedes hacer click donde quieras que aparezca un globo".
Eso sería interesante ¿no? Yo creo que sí.
Así que ¿cómo hacemos eso? Queremos que nuestro programa esté cambiando, ¿cierto?
Que cada vez que el usuario haga click, aparezca un globo nuevo.
Así que empecemos por mover todo esto dentro de una función "draw", así será fácil cambiarla.
Entonces movemos esto aquí, indentamos esto. Ok. Genial.
Así que ahora queremos verificar y ver si el usuario presiona el ratón en este momento.
Bueno, podemos hacer eso con un "if". Así que "if(mouseIsPressed)", y luego hacemos algo.
Entonces, ¿qué vamos a hacer? Si el usuario presiona el ratón, queremos, de alguna manera, añadir un número a nuestro arreglo
Vamos a hacer este arreglo de dos elemento nuevamente. Ok.
Así que queremos añadir un número a este arreglo de alguna manera. Bueno, te mostraré una forma de hacer esto.
Entonces podemos escribir "xPositions[2] = mouseX;"
Muy bien, déjenme mostrarles que esto funciona.
Hago click y ¡tan tan! Aparezco un globo. ¿Qué fue lo que pasó?
Aquí dice que encuentre el arreglo "xPosicitions[2]" en el elemento 2, recuerden que es el tercer elemento, porque nuestro arreglo inicia con el elemento cero.
Y si lo ven aquí, no hay tercer elemento, ¿cierto? No hay nada en ese espacio.
Así que dice que lo encuentre, y que ponga "mouseX" en ese espacio.
Bueno, como antes no había nada ahí, ahora está "mouseX".
Y ahora nuestro arreglo tiene tres elementos, y este ciclo "for" de aquí abajo, ejecuta el código con el tercer elemento y termina por dibujar el tercer globo.
Eso está muy bien, y déjenme hacer click más veces para mostrarles que esto funciona.
Así que cada vez que hago click, el programa dibuja el tercer globo en la posición en la que hago click con mi ratón.
Y eso es porque constantemente estamos reemplazando el espacio 2, el índice 2.
Estamos constantemente reemplazándolo con la posición "x" del ratón.
Así que siempre vamos a tener tres globos, porque ya teníamos este en el elemento 0, este otro en el elemento 1 y estamos cambiando constantemente el espacio 2. ¿Ok?
Eso está bien, pero lo que realmente queremos es que el usuario pueda poner muchísimos globos, ¿cierto?
Que cada vez que el usuario haga click, haya un globo nuevo.
Eso significa que necesitamos incrementar constantemente el índice de nuestro arreglo en el que estamos guardando la nueva posición.
Así que no queremos que sea 2 cada vez, queremos que sea 2, luego 3, luego 4, luego 5, luego 6, etc.
Podemos hacer esto si tenemos una variable como contador. Así que escribimos "newInd = 2;"
Con este vamos a empezar, y luego aquí vamos a poner "newInd" en lugar de 2.
Y luego lo que queremos hacer es incrementar "newInd++".
Así que cada vez sumamos 1 a esta variable. Entonces empezamos en 2, luego se convierte en 3, luego en 4.
Así que cada vez que hace click, se convierte en un valor mayor. Probemos.
¡Tan tan! Muchos globos. Es una fiesta de globos. ¡Wow!
Eso es genial, ¿cierto? Pero no es la mejor manera de hacerlo, resulta que agregar elementos a un arreglo es algo que vamos a hacer muchas veces.
Así que tenemos una manera más fácil de hacer esto.
Déjenme borrar todo esto que hicimos. Muy bien, no necesitamos esto, y ya no necesitamos esto. Lo marcamos como comentario.
Ok, la manera de hacerlo es escribir "xPositions.push(mouseX);".
Lo que estamos haciendo es llamar este método del arreglo "xPositions".
Estamos llamado una especie de comando en el arreglo. Estamos diciéndole al arreglo. "Oye, pon este nuevo valor, el de "mouseX", al final del arreglo".
Así que cada vez que se llama, cada vez que el usuario presiona el ratón, va a tomar el valor de "mouseX" y lo va a poner al final del arreglo.
Entonces el arreglo va a ser más grande cada vez. Así que vamos a reiniciar y probar esto.
¡Tan tan! ¡Funciona! Y de esta manera tenemos menos código que antes. ¿Correcto?
Así que la mayoría de las veces querrás usar "push" para agregarle cosas a tu arreglo como aquí.
Y es bastante ordenado porque puedes hacer que estos arreglos se hagan más grandes cada vez durante el programa.
Como cuando tienes una animación o cuando hay usuarios haciendo cosas y entonces puedes hacer mucho más.
Así que has visto el 90% de las razones por las que usarías arreglos y las formas de usarlos.
Pero hay mucho más que puedes hacer con arreglos. Así que si tienes preguntas, sólo hazlas en el área de discusión.
Pero primero asegúrate de volverte un maestro en los fundamentos.