Volvemos con Winston
Ahora tenemos ambas: la variable "x" y la "y"
Para la posición de Winston
Así que le podemos mover hacia los lados
Hacia arriba y hacia abajo wew!
Muy chulo!
Ahora vamos a devolverlas a su estado original
Eran: 200 (x) y 200 (y)
Vamos a ver como funciona este programa
Así que empezando aquí: Tenemos una variable (tamañoOjos)
Que se está usando para manejar el tamaño de los ojos
Porque los ojos son 40 pix. de ancho
y 40 pix. de alto
Y despues tenemos estas variables "x" e "y"
Y esos posicionan el centro de la cara
Y las podeis ver usadas
En este comando "ellipse"
Que dibuja ese gran círculo amarillo
Y luego aquí abajo
Para los ojos
La "x" y la "y" son usadas de nuevo
Y aquí
Los ojos son posicionados
Relativos al centro de la cara
Así que este está
Cincuenta píxeles
A la izquierda del centro
Y este está 100 píxeles
a la derecha del centro
Ok. Pues muy chulo!
Y esa es la razon por la que podemos
mover a Winston hacia arriba y abajo
Ahora, quiero poder controlar
mas cosas de la cara de Winston
usando variables
Así que quiero averiguar
que mas en este programa
podemos "guardar" como variables
Para eso
Voy a ir buscando
en cada linea de codigo
Y buscar lo que llamamos
"hard coded" numbers
esos son numeros que son
simplemente numeros a secas
no son variables ni numeros dependeintes de variables
así que vamos a empezar aquí
en el primer eclipse
tenemos 300 y 300
para la anchura y la altura
esos simplemente son numeros a secas
así que vamos a hacer una variable
sustituyéndolos
llamado faceSize (tamañoCara)
y guardar en el el numero "300"
Ahora simplemente escribiremos faceSize
faceSize
Ok, sigamos
y saltarnos los colores (comando fill)
ahora los comando elipticos son o
todo variables
o dependientes de variables
así que las vamos a dejar
así por ahora
y luego el comando de la boca
esos son dependientes de "x" e "y"
pero estos de aquí
son solo numeros a secas
150 y 150
Así que vamos a decir que
mouthSize (buen nombre)
es igual a 150
Sustituiremos mouthSize
y mouthSize
Vale, entonces, ahora
tenemos los tamaños de las figuras
guardados como variables ahí arriba
eso significa que es muy muy facil
para nosotros cambiar los tamaños
como esto mira
Woooo Winston tiene hambre! jajaja
y algo como ya sabes como
Winston tiene mucha hambre
y luego se come un monton de donuts
y luego se hace super grande xD.
Vale.
Pero hay algo
que no me gusta de este programa ahora mismo
Así que si hago el tamaño de la cara muy muy pequeña
empieza a ser gracioso
porque los ojos y la boca
esán fuera de la cara xD
y en ciertos puntos si quiera
parece que estén conectados
a la cara
Así que ya no es una cara, no?
Así que lo que queremos que pase
es que cuando cambie el tamaño de la cara (faceSize)
quiero la cara y la boca
Quiero que su tamaño cambie junto con la cara
Para que si hago la cara ser la mitad de su tamaño
quiero que la boca sea la mitad de grande tambien
eso significa que
quiero calcular: mouthSize y eyeSize
como fracciones de faceSize
Vale, vamos a resetear estas variables
Y os enseñaré lo que quiero decir
Vamos a empezar con mouthSize
así que ahora mismo
faceSize es 300 y mouthSize es 150
asi que si pensamos en ello
relativamente uno del otro
diriamos que faceSize es el doble de grande
que mouthSize
o que mouthSize es la mitad de grande
que faceSize
y podemos escribir eso en código como este
una mitad de faceSize
ok entonces este codigo dice
que cojemos el valor de faceSize
los multiplicamos por la mitad
y lo guardamos en "mouthSize"
así que si cambiamos esto de aquí
el ordenador sabria lo que la mitad de eso es
y eso se convertiria en mouthSize
Perfecto! Eso es lo que queremos
Ahora lo mismo con eyeSize
Así que faceSize es 300
y eyeSize is 40
así que necesitamos que sea
40/300 40 trescientoavos de faceSize
que es igual a, vamos a ver
4/30 que podemos
simplificar hasta 2/15
así que vamos a decir que
2/15 por faceSize
por cierto
Si eres nuevo en esto de las fracciones
Y esas matematicas son algo dificiles para ti
puedes aprender mas sobre fracciones
en KhanAcademy
y volver cuando
creas que estas preparado
aquiSí, simplemente ves allí.
OK
pues vamos a probar a cambiar el tamaño de la cara otra vez
Jaja! Mira!
la cara y los ojos cambian su tamaño
proporcionalmente a la cara
pero seguramente te has dado cuenta
hay algo que está mal
los ojos y la boca
aun salen fuera de la cara
aunque estan
con un tamaño mas proporcional
Eso es porque aun tenemos
unos numero a secas
en nuestro comando elipse
unos numeros que en realidad deberían
deberían ser fracciones de variables
Aquí, te lo enseñaré
Entonces, para el "ellipse"
tenemos X menos 50 para la posicion de X
Esto significa que siempre estará 50 pixeles a la izquierda
incluso si hacemos nuestra cara
mas pequeña que 50 pix
y eso no tiene nigun sentido
porque eso significa que el ojo ozquierdo
ni si quiera estará
en la cara
Así que debería ser X menos alguna fracción
el tamaño de nuestra cara
y podremos averiguar la fraccion
de la misma manera
50 relativamente de 300
así que 50/300, 5/30, 1/6
entonces 1/6 por faceSize
Y veremos otros 50 aqu´´i
Asñi que podemos hacer lo mismo
de la misma manera
aqui tenemos 100/300
que será
1/3 un tercio faceSize
este es 60
así que acabará siendo
1/5 por faceSize
y aqui tenemos otros 50
así que es un sexto otra vez
y luego 40
que es lo que sacamos por ahí arriba
2/15
así que 2/15 por faceSize
vale, vamos a intentarlo de nuevo
Oh! Mira eso!
Míralo! Es bellísimo
muy bueno
Vale, pues vamos a recordar
Habíamos creado esta variable
que guardan el tamaño de la cara
y simplemente guarda un numero
despues tenemos estas variables "mouthSize"
y "eyeSize"
y las calculamos basandos en fracciones
relaccionadas a faceSize
para asegurarnos de que
sus valores son siempre cambiados
basandonos en como empezamos esta al principio
luego todos los otros son calculados
basandono en faceSize también
para asegurarnos de que la posición
dentro de la cara cambie
Si faceSize cambia
Whoo! Vale!
Ahora que realmente entendemos
como hacer variables
dependiendo de los valores de otras variables
podemos hacer muchas mas cosas con nuestros programas!
Vamos a celebrarlo haciendo a Winston
Gigante! Si, vamos Winston!