-
Ahora hablemos sobre algo que has estado usando
-
todo este tiempo: Funciones.
-
Cada vez que has usado comandos como "rect()" o "fill()" o "text()",
-
has estado llamando funciones, y esas funciones han dibujado
-
lo que les has dicho que hagan.
-
¿Qué es una función en realidad?
-
Es una colección de código que agrupamos
-
y le damos un nombre porque queremos poder
-
usar la funcionalidad de ese código muchas veces.
-
Piensa en "rect()".
¿Qué es lo que hace "rect()"?
-
Sólo dibuja cuatro líneas, ¿cierto?
-
Podríamos hacer lo mismo usando nuestra función "line()", ¿cierto?
-
Y aquí tenemos lo que parece un rectángulo.
-
Pero nos damos cuenta de que lo que queremos hacer
-
es dibujar un rectángulo muchas veces,
-
y sería realmente molesto
-
hacer el cálculo cada vez, para tratar de averiguar
-
cómo dibujar una línea de una esquina a la siguiente
-
y a la siguiente y a la siguiente.
-
Así que en lugar de eso, sólo hacemos una función "rect()",
-
y esa función hace exactamente lo mismo
-
que esas cuatro líneas de código, pero con menos código.
-
Eso es muy interesante, y "rect()" es una de esas funciones
-
que tenemos disponibles para todos los programas
-
que usamos aquí en Khan Academy.
-
Pero también tú puedes hacer tus propias funciones
-
para usar en cada uno de tus programas.
-
Por ejemplo, digamos que estamos haciendo un programa
-
y queremos dibujar a "Winston" muchas veces,
-
tal vez porque vamos a contar la historia de "Winston"
-
y vamos a mostrarlo en cada etapa de su vida.
-
Así que aquí tenemos lo que podría ser el principio del nuestro código para dibujar a "Winston":
-
Tenemos las variables "faceX" y "faceY"
-
para almacenar el centro de la cara,
-
y luego dibujamos los ojos y la boca
-
en relación con esas variables.
-
En este momento el programa ve el código,
-
y no está dentro de ninguna función, así que lo ejecuta,
-
y lo ejecuta sólo una vez.
-
Ok, vamos a convertir esto en una función.
-
Para hacerlo, lo hacemos muy similar a la manera en que
-
declaramos una variable, porque en realidad
-
es lo que estamos haciendo.
-
Así que escribimos "var drawWinston",
-
Y le damos un nombre lindo, muy descriptivo,
-
y luego "=", pero aquí, en lugar de escribir un número o una cadena de caracteres,
-
vamos a escribir "function", debes asegurarte de escribirlo correctamente,
-
y luego paréntesis vacíos "()" y luego una llave que abre "{"
-
y luego una llave que cierra "}" y punto y coma ";".
-
Ok, entonces lo que necesitamos hacer es poner todo
-
lo que queremos dentro de nuestra función entre la llave que abre y la que cierra.
-
Así que tomamos todo este código de aquí,
-
y lo ponemos en nuestra función, indentando bien, y ¡tan tan!
-
Así que lo que ahora tenemos es esta variable
-
que está almacenando una función - lo que hicimos básicamente fue darle
-
una etiqueta a este bloque de código de manera que podamos decirle
-
a nuestro programa en cualquier momento,
-
"¡Oye, encuentra este bloque de código con esta etiqueta y ejecútalo!"
-
Estamos haciendo que este fragmento de código sea re-usable.
-
Pero ahora fíjate, ¡que ya no tenemos a "Winston"!
-
¡Perdimos a "Winston"! ¿A dónde se fue?
-
Ok, lo que sucedió es que una vez que pusimos este código dentro de una función,
-
le dijimos a nuestro programa: "oye, aquí hay un pedazo de código
-
que quiero ejecutar más tarde,
-
pero sólo cuando te diga que lo ejecutes".
-
Así que tenemos que decirle al programa que ejecute el código, lo que significa que necesitamos
-
llamar la función, de la misma manera en que lo hacemos con "ellipse()" y "rect()" y "line()".
-
Así que sólo escribimos el nombre de la función ("drawWinston")
-
seguido de los paréntesis que abren y cierran,
-
y por supuesto, nuestro punto y coma, y ¡tan tan!
-
¡Tenemos a "Winston"!
-
Ok, pienso que está muy bien, pero tal vez no piensen que está bien
-
porque todo lo que hemos hecho es que nuestro programa haga exactamente
-
lo mismo que hacía antes.
Un poco tonto, ¿no?
-
El punto es que a las funciones las podemos reutilizar.
-
Así que hagámoslo ahora.
-
Podemos copiar y pegar la llamada a la función, ¡tan tan!, ¡tan tan!, una y otra vez.
-
Mmm, pero se ve igual, bueno, funciona.
-
Está dibujando muchos "Winstons" pero el problema
-
es que todos están en el mismo lugar.
-
Si tuviéramos vista de rayos x, veríamos
-
tres "Winstons", pero no la tenemos.
-
(No sé si tú la tengas.)
-
Pero podemos hacer un pequeño cambio en nuestra función
-
que hará que sea obvio.
-
Entonces ¿ves que "faceX" y "faceY" siempre están en 202 y 208?
-
Podemos cambiar esto usando la función "random()",
-
digamos "random() form 50 to 350", y eso genera
-
un número aleatorio entre estos dos, y podemos hacer lo mismo aquí,
-
y cada vez que llamamos la función, genera un nuevo número aleatorio,
-
y si presionamos "Restart", podemos tener "Winstons" aleatorios.
-
¡Genial! ¡Whoo!
-
Muy bien, pienso que esto es genial porque tendríamos
-
mucho código para escribir esto si no lo tuviéramos en una función.
-
Tendríamos tres veces esta cantidad de código.
-
Pero todavía no es tan útil como podría ser,
-
porque probablemente no queramos tener "Winstons" aleatorios.
-
Probablemente queremos poder posicionar a "Winston"
-
en puntos específicos de la pantalla.
-
Así que mantente en contacto, porque próximamente hablaremos sobre cómo pasar parámentros
-
a nuestras funciones, y entonces
-
podrás hacer eso exactamente.