-
Estamos de regreso en nuestro programa para dibujar a "Winston", y he añadido algo de texto en él.
-
Lo que quiero hacer es posicionar a "Winston" debajo de cada una de estas etiquetas,
-
para mostrarlo en cada etapa de la vida.
-
Por ahora él está por todos lados.
-
Eso es porque estamos asignando a "faceX" y "faceY" números aleatorios dentro de la función.
-
En lugar de eso, lo que queremos hacer es decir: "Oye, aquí está la posición exacta en la que quiero dibujar a 'Winston'"
-
Y luego quiero poder especificar esta posición cada vez que llame a la función,
-
de la misma manera que hicimos con "ellipse()" y con "rect()".
-
¿Está bien? Quiero poner un "Winston" aquí, y un "Winston" aquí, y un" Winston" aquí y un "Winston" aquí,
-
y no sólo en lugares aleatorios cada vez
que llamo la función.
-
Así que para hacer eso, tenemos que especificar "parámetros" para la función,
-
tanto en nuestra definición de la función - aquí en la parte superior -
-
como en la llamada a la función, aquí abajo, cuando en realidad llamamos a la función.
-
Así que para la función "drawWinston()", vamos a pasar "faceX" y "faceY",
-
para que use los valores que pasamos en lugar de generarlos aleatoriamente.
-
Comencemos por pensar en los parámetros que vamos a enviar en estas llamadas a la función aquí abajo.
-
Queremos posicionar a "Winston" debajo de cada texto, así que probablemente queremos que la "x" y "y"
-
de cada "Winston" sea muy similar a los números que pasamos en la función "text()".
-
Probablemente, sólo unos 10 pixeles más abajo en la "y". Así que la primera podría ser 10 y 30, y luego 200, 30...
-
10, 230... 200, 230. Son las mismas coordenadas que las del texto.
-
Sólo estoy aumentando 10 en cada "y", porque quiero que quede un poco más abajo.
-
Ok, pero "Winston" no se ha movido. Esto es porque no le hemos dicho a nuestra función aquí arriba
-
que le estamos pasando los parámetros, así que sigue usando los valores aleatorios.
-
Entonces con el fin de decirle a esta función: "Oye te vamos a pasar esta información",
-
tenemos que dar los nombres de los parámetros dentro de estos paréntesis.
-
Así que los llamaremos "faceX" y "faceY", y los separamos por una coma, y los vamos a llamar así porque
-
así es como los estábamos usando para referirnos a ellos dentro de la función.
-
¿Ok? De esta manera no tenemos que reescribir el resto de nuestro código.
-
Pero sigue sin pasar nada; "Winston" está por todos lados.
-
Bueno, si observamos aquí arriba en nuestra función, estamos sobreescribiendo "faceX" y "faceY" con valores aleatorios.
-
Así que todo lo que tenemos que hacer
es borrar estas líneas...
-
¡Tan tan!, Ahora estamos pasando "faceX" y "faceY" a la función y la función está usando los valores que le estamos asignando aquí.
-
Ahora, como puedes ver, no posicioné correctamente a "Winston", porque olvidé
-
que el texto se posiciona a partir de la esquina superior izquierda,
-
y la cara se posiciona a partir del centro. Entonces sólo tengo que jugar un poco con mis números aquí, ¿de acuerdo?
-
Probablemente necesito mover la "x",
por encima, ok... este es nuestro niño...
-
Continuamos, y ahora todo lo que tengo que hacer es cambiar lo que estoy pasando a la función,
-
no tengo que cambiar la definición de función en absoluto,
-
porque la función siempre va a tomar los valores que le pasemos, ¿ok? Como lo hace con "ellipse()" y "rect()".
-
Ok, ya lo posicioné más o menos, pero
lo que vi es que "Winston" es muy grande.
-
Está sobre todo, no cabe.
-
Bueno, como escribí todo el código para dibujarlo en una función,
-
puedo cambiar el tamaño de todos ellos cambiando sólo la línea de código que dibuja las elipses.
-
Así que lo hacemos de 190, sí, "Winston" está a dieta, de 190.
-
Muy bien, ahora él va a quedar mejor y yo podría seguir ajustándolo para que en realidad quede ahí dentro, ¿cierto?
-
Interesante. Vamos a hacer una revisión final de lo que hace este código. Define una función llamada "drawWinston()",
-
y nos dice que esta función toma dos valores, etiquetados como "faceX" y "faceY",
-
y estos valores vienen básicamente como variables que podemos usar en cualquier lugar dentro de nuestra función,
-
así como usamos las variables declaradas en la parte de arriba.
-
Entonces podemos llamar esta función siempre que queramos después de que la declaramos,
-
y le podemos pasar valores diferentes, valores nuevos que va a usar cada vez.
-
Así que ahora han visto lo que es realmente interesante de las funciones.
-
Podemos llegar a un código que pensamos que podría ser muy útil para reutilizar,
-
pero podemos también usar parámetros y decir: "Oye, aquí hay una cosita que puedes cambiar en este código para personalizarlo"
-
Es como una receta. Escribes las instrucciones generales, y te das cuenta de repente que necesitas alimentar 4 "Wintons" en lugar de 1,
-
no tienes que empezar todo otra vez, sólo modificas las instrucciones originales y multiplicas todo por 4.
-
¡Así que ahora puedes empezar a pensar en las recetas de tu código! Yummy