Animaciones con Logo
Por Félix Maocho
29/7/2017
Programar, no es sólo aprender algo que quizá sea útil, Programar enseña a pensar. Es una actividad que enseña la lógica, el orden, saber atacar problemas de gran complejidad, diseccionándolos en múltiples problemas menos complejos y por tanto de mejor comprensión y resolución, y esta técnica no solo es útil en programación, vale para enfrentar problemas de la vida diaria, y puede ser aprendida desde edades tempranas con resultados extraordinarios.
Por eso insisto, que que incites a tus hijos a manejar LOGO en estas vacaciones, es muy entretenido y gratificante y seguro que les va a «enganchar» y también te invito a que te unas a aprenderlo, porque te estas perdiendo algo tan divertido como puede ser el saber leer o escribir.
Hoy vamos a ver sólo un atisbo de las posibilidades de utilizar LOGO para hacer animaciones. ¿a quién no le gusta hacer dibujos animados, o pequeños gif con movimiento?. En un solo tema no se puede desarrollar esta técnica, pero si puedo levantar una punta el manto que cubre la técnica de animación, para que puedas ver sus posibilidades.
Además nos vamos a dedicar a rematar punto sueltos, que nos han ido quedando en post anteriores, como por ejemplo cómo guardar las cosas que vas haciendo.
Despliega el menú Archivo que es´el primero de la linea superior y veras que se abre una columna de posibles opciones.
De todas ella elige la opción Editar que es una de las últimas.
Si sale una pantalla como la que ves, es que no sabes guardar las cosas. Algo que es normal, porque aun no te había enseñado a guardarlas, pero como a partir de hoy, vamos a empezar a hacer cosas complicadas, vamos a aprender a guardar las cosas, para poder dejar a medias un trabajo hoy y continuar otro día.
Primero vamos a crear nuevos comandos personales que deseamos guardar, empezando por uno, que siempre nos sera útil, dejar todo como cuando empezamos, como estaba al principio de la sesión, Y cuando digo todo, es todo, el color del fondo, el color del trazo, el grueso del trazo, la tortuga que se vea etc.
Si recuerdas borrapantalla (bp) o Reiniciar dejaban sólo la pantalla en blanco y la tortuga en el punto de inicio, pero no cambiaban todas las cosas que hemos indicado, este comando si lo hará. Lo llamaremos reini y va a ser un Reiniciar o un (bp), pero con esteroides. El comando que construiremos es:
para reini
poncf 7 poncl 10 pongrosor 1 st bp
fin
Copia con copy/paste la primera línea a tu programa al pie de la página y te aparece la pantalla de edición de mandatos, Copia en esa pantalla la segunda línea y luego apriete OK con ello te debe aparecer un mensaje en la pantalla donde se conserva el historial de la sesión que diga
reini definido
Por si lo han olvidado te explico el comando particular con los nombres de la primitivas completos
poncolorfondo 7 (blanco)
poncolorlapiz 10 (negro)
pongrosor 1 (grosor del lápiz)
subetortuga (por si estaba ocultatortuga)
borrapantalla
Si ahora vuelven a dar en Archivo Editar, la pantalla anterior, aparece como esta, donde aparece el comando particular que hemos hecho reini, y no solo eso, si pinchamos dos veces seguidas sobre él, se despliega el contenido para que la podamos cambiar si es necesario. Vamos a verlo
Como ves está guardado como se debe incluyendo la palabra din que escribiste el pulsar OK. Dando en el menú Archivos y luego a Guardar y salir. guradamos los cambios efectuados.
Comentarios (;)
Como digo, en esta pantalla podemos hacer cualquier cambio, por ejemplo vamos a documentarlo.
¿Cómo? escribiendo lo que queramos después de un ; (punto y coma) Todo lo que se escriba detrás de un ; y hasta el final de la línea, el programa LOGO entiende que es un nota aclaratoria al margen del programa, (técnicamente se los llama comentarios), y no trata de ejecutarlos, los ignora. En el editor de cometarios aparecer´n por ello escritos en verde,
Por ejemplo en nuestro caso la línea en verde que dice
; reini – Reiniciar dejando todo como cuando se abre el programa
como viene escrito después de ; (punto y coma), sabe que es un comentario para documentar el comando. Es algo sumamente útil, porque cuando pasen cuatro meses y tengas 500 comandos personales, no recordarás lo que hacia exactamente, ni cuales eran las variables que necesitabas pasar y te bastará editarlo, para que leyendo los comentarios te enteres y de paso, si es necesario, modifiques el programa añadiendo funcionalidades para que mejoren el funcionamiento o valga para mas cosas,
Ya lo iremos viendo en la practica. De momento, vamos a meter y documentar los comandos útiles que habíamos hecho, pong que era la forma reducida de pongrosor al trazo, lagrima, que pintaba una lágrima con una banda y poli_regu que pintaba polígonos regulares.
¿Se acuerdan? – Los escribo aquí para que con copy/paste los copien a la pantalla del programa
pong :gr
pongrosor :gr
fin
poli_regu :nun ;long
repite :num [av ;long gd (360/:num)]
fin
para lagrima
haz «val 5
repite 25 [ haz «gros redondea (:val / 5) pong :gros av 1 haz «val :val + 1 ]
sl
repite 10 [ haz «gros redondea (:val / 5) pong :gros av 1 haz «val :val + 1 ]
bl
repite 15 [ haz «gros redondea (:val / 5) pong :gros av 1 haz «val :val + 1 ]
De modo que al finalizar de introducir todos nuestros comandos personales al dar a ArchivoEditar, la ventana que se abre aparece tal como lo presenta la imagen:
con todos los comandos que hemos creando e igual que hemos hecho con reini, vamos a hacer con los demás, documentarlos para que quede clarísimo a un vistazo como funcionan:
Puedes dedicar a comentarios tanto texto como quieras, con tal de iniciar cada linea con un ; Insisto. documentar el trabajo que se hace, es siempre conveniente, ayuda a recordar que hacia el comando, sin tener que estudiarlo línea por línea, algo muy practico, cuando unos comandos llaman a otros y se complica seguir lo que hacen.
Por otra parte, es la forma que hay para que alguien que no ha programado el comando, pueda utilizarlo, pues necesitará saber que parámetros utiliza y que representan los parámetros, así como tener una idea bastante aproximada de lo que hacen. Si queremos avanzar lejos tendremos que avanzar en equipo y traspasarnos estas utilidades de unos a otros, pues no es cosa de que cada cual tenga que comenzar por inventar la rueda.
Recuerda el proverbio chino:
Si quieres ir rápido camina solo,
si quieres llegar lejos ve acompañado.
Por ahora queremos aprender deprisa, y vamos solos, pero si algún día queremos hacer un proyecto de cierta complicación como un vídeo en 3 dimensiones, convendrá trabajar en equipo para hacerlo en un espacio razonablemente corto de tiempo.
Guardar el trabajo hecho
Hecho esto, llegamos al momento de GUARDARLO PARA SIEMPRE, y que no se pierda el trabajo realizado.
Si ahora en el menú de Archivo seleccionas Salir, y no haces nada más el trabajo de hoy se pierde y nuevamente Editar se quedará en blanco. Por ello antes de salir del programa hay que salvar el trabajo realizado.
Para ello lo mas practico es ir nuevamente al menú Archivo y buscar la opción Guardar como… ahí aparece una ventana que te pregunta con qué nombre lo quieres guardar, pones el que con mas facilidad te acuerdes como por ejemplo tunombre_logo o como he puesto yo primera vez y al dar intro se guarda todo como lo dejaste y todas las funciones que tienes con lo que después al volver la abrir pues una vez abierto vas al menú Archivo y buscas Abrir y pinchando sobre el logotipo de FSM que tiene debajo el nombre que elegiste te encueras todo como lo dejaste:
¡Ojo! Muy importante
Recuerda para volverlo a encontrar cuando lo encuentres la ruta completa de donde lo depositas en mi caso como se puede ver está en C:/Logo book/Capitulo 2/primera vez
= = = = = = =
Ahora sal y vuelve a entrar en el programa. Mira en el menú Archivo Editar, encantaros nuevamente la pantalla de edición vacía de contenido, pero si haces Archivo Cargar y seleccionas en la carpeta adecuada el nombre que pusiste, y luego vuelves a dar Editar, encontrarás los comandos tal como los dejaste la última vez.
Lo cual, es una ventaja pues cuando hagas cosas complejas, no lo podrás hacer de una sola sentada y convendrá ir guardarlo todo tal cual acabas para volver a continuar en otro momento donde lo dejaste. Por tanto NO OLVIDES SALVAR EL TRABAJO QUE HAS HECHO.
Hacer un circulo donde queramos
Dicho esto pasamos a otra cosa. Vamos a hacer una circunferencia en cualquier punto, de radio dado.
Hemos visto la forma de hacer una (casi) circunferencia como un polígono regular de muchos lados, (360 en concreto), y la cosa funciona bien, pero tiene un inconveniente, que no es la forma habitual de definir una circunferencia, lo habitual es tomar un punto como centro y a partir de ahí con un compás pintar todos los puntos que están a la misma distancia del centro. Por tanto en el 90% de los casos a ti te van a pedir pinta una circunferencia de centro en el punto (x,y) y radio rad.
Claro que, por ejemplo si desde el origen queremos hacer una circunferencia de radio 25 podemos hacer lo siguiente. Alejarnos 25 del centro con le lápiz levantado girar 90º a la izquierda escribir un trozo que sera lo que corresponda a 1º de giro girar un grado a la izquierda y repetir la cosa 360 veces. (mas o menos es lo que hace el programa polio_regu), el problema es saber cuanto tenemos que desplazarnos en esa posición.
¿Cuanto tendremos que avanzar?- Pues una sencilla regla de tres:
Si a 360ª le corresponde 2πR a 1º le corresponde la trecientos sesentava parte.
Pues adelante. La primera cosa es que pi en LOGO (casi) equivale a π=3.14 15 9 … por tanto a 1º le corresponde una distancia de (2pi:rad)/ 360. O sea se pintará con las siguientes instrucciones:
para circun :rad
; circunferencia de centro origen y radio :rad
sl ; sube lápiz
av :rad ; avanza el radio
gi 90 ; gira izquierda 90º
bl ; baja el lápiz
repite 360 [ ; repite 360 veces y abre corchete
av (2*3.1416*:rad/360) ; avanza 2pR/360
gi 1 ] ; gira izquierda 1º y cierra corchetes
fin
Si ahora copias para circun :rad en la última línea de la pantalla se abrirá nuevamente la Pantalla de edición de comandos y si ahí colocas y con copy/paste el cuerpo del comando, desde donde empieza el comentario, dejando fuera fin y luego das OK, se te habrá creado un comando personal con este aspecto:
El ejemplo que he puesto está sobre documentado, no hace falta tanto comentario, lo obvio sobra y además lia y oculta lo importante, tampoco es necesario que cada comando esté en una sola línea, incluso es preferible que el contenido de una línea sea un conjunto de comandos que hacer entre todos una cosa concreta, En este caso, sólo lo he hecho, para que veas que es posible, y quiza en puntos muy concretos sea conveniente hacerlo, pero cuando retoque la función lo dejo en lo razonable, para que observes la diferencia.
Atención problemas
= = = = = = =
A veces por alguna razón que no he llegado a descubrir, se colocan caracteres de espaciador después de fin que salen automáticamente y al ir a guardar te da un error que dice
algo así como
FIN (END) dentro de una instrucción multi-línea en circun
si borras todo lo que hay detrás de fin, el programa traga sin problemas.,
= = = = = = =
Bien, ya hemos conseguido lo primero que nos proponíamos con circun, que pinte una circunferencia de cualquier radio, pero aun falta que la pinte en donde queramos colocar el centro. por ejemplo en el punto 237(x) 22(y) .
Para eso tenemos dos caminos,uno bastante rupestre aprovechando que al principio aparece en el punto (0.0) y mira para arriba (eje de las Y) hacemos:
sl ; sube lápiz
av 22 ; ejes de las Y
gd 90 ; se pone mirando al eje eje de las X
av 237 ; eje de las X
bl ; baja lápiz
circun 50 ; circunferencia de radio 50
Pruebalo y veras que lo hemos colocado donde queríamos. Ahora bien, si la siguiente circunferencia la queremos colocar en -22(x) 43 (y), la cosa se complica. porque hay que andar con sumas y restas para trasladar la tortuga desde donde esté que no lo sabemos bien donde es, a otro sitio.
Comando ponpos
Por ello, los inventores de LOGO idearon un camino mucho mas cómodo, que es enviar la la tortuga directamente al punto que indiquemos. El comando tiene de nombre ponpos, que indica pon posición que por una de esas incongruencias de LOGO carece en español de la primitiva ponposicion. Su sintaxis es la predecible
ponpos [x y]
Donde x e y son las coordenadas del punto donde lo queremos colocar. Pero como pasaba con el mandato poncl, si vamos a utilizar variables hay que utilizar el truco de poner una lista, en este caso la sintaxis es
ponpos (lista 😡 :y)
Compruébelo, poniendo estas dos instrucciones
ponpos[-20 -40]
circun 50
haz «x -50
haz «y -35
ponpos (lista 😡 :y)
circun 50
Fijaté bien en el tipo de las comillas de las primitiva haz, si no son estas » no funciona. Si todo ha ido bien, verás que la tortuga se desplaza a donde la digamos y hace un circunferencia , pero deja marcada la recta de su trayectoria, seremos por tanto nosotros los que tendremos que negociar el subir y bajar el lápiz cundo convenga
Mejoremos nuestro comando circun permitiendo elegir el punto donde lo colocamos edita y cambia el contenido por este;
para circun 😡 :y :rad
; circunferencia de centro origen y radio :rad
sl ponpos (lista 😡 :y) av :rad gi 90 bl
repite 360 [av (2*3.1416*:rad/360)gi 1]
fin
Con lo que ahora el comando cincun tiene este aspecto:
No hay una sola forma de hacer las cosas bien, puede que otro lo hiciera de otra forma, también muy correcta, pero todos estaríamos de acuerdo al menos que la actual forma de documentar y agrupar los mandatos, es mas correcta en este caso que en el caso anterior, Queda tremendamente claro que hace la función y a poco que se estudie se verá que la primera línea sitúa el cursor en el cetro y se desplaza al borde :rad distancia quedando orientado de forma tangencial (90º) mientras que la segunda linea pinta un polígono de 360º
Comandos poncr y rellena
Vamos a hacer una cosa mas, pintar el circulo del color que queramos. Hay dos comandos, el primero para indicar el color de relleno poncr y rellena que lo hacen conjuntamente. Su sintaxis son
poncr n
poncr [r v a]
poncr (lista :r :v :a)
según utilicemos un color de la tabla de colores, un color del sistema RGB digital o ese mismo sistema pero utilizando variables. Por su parte rellena actúa como si echáramos un bote de pintura del color indicado por poncr, rellena de ese color ucalquier linea cerrada. su sintaxis es solo su nombre
rellena
Ejemplos de uso con cada uno de ellos
reini ; limpia la pantalla
; ejemplo utilizando el color 11 de la tabla de colores (azul)
circun -50 50 40
sl ponpos [-50 50] bl ; colocarse en el centro
poner 11 rellena
; ejemplo utilizando el color 9 pasado por variable (marrón)
circun 50 50 40
sl ponpos [50 50] bl ; colocarse en el centro
haz «color 9
poner :color
rellena
; ejemplo utilizando el color rob (verde)
circun -50 -50 40
sl ponpos[-50 -50] bl ; colocarse en el centro
poner [100 200 50]
rellena
; ejemplo utilizando el color rgb pasado por parámetros gris)
circun 50 -50 40
sl ponpos[50 -50] bl ; colocarse en el centro
haz «r 150 haz «v 150 haz «a 150 ; atención al tipo de comillas usar estas «
poncr (lista :r :v :a)
rellena
Comando azar
Sabido esto vamos a hacer 10 círculos de radio y color aleatorios, colocados aleatoriamente. Para ello, sólo tenemos que añadir una cosa mas, saber sacar números aleatorios. Un numero aleatorio, es un numero elegido por sorteo entre dos valores dados por ejemplo entre 0 y 255 que tiene el color verde. Su comando es azar y su sintaxis es
azar n
que devuelve un numero al azar entre 0 y n. Si queremos hacer un dado por ejemplo tendremos poner
haz «n (1+ azar 5)
que devolverá cualquier número entre el 1 y el 6, que es lo que pone en las caras de un dado. porque si ponemos sólo
haz «n azar 5
obtendríamos un numero al azar, pero entre 0 y 5, que son igualmente seis valores diferentes pero en otro rango. Si por ejemplo quisiéramos un número entre -200 y +200 también lo podemos obtener pero escribiendo
haz «n (-200+ azar 400)
Como azar nos va a dar valores entre 0 y 400 los valores que obtendríamos para n valores que van entre de (0-200) a (400-200)
Sabido esto hagamos que aparezcan diez círculos en un espacio aleatorio de las x -100 a 100 de las y de -80 a 80 con radios comprendidos entre 5 y 20 y de cualquier color del sistema RGB
Observen que he utilizado lista profusamente como una forma segura de pasar varias variables a un comando, observen también que el nombre del comando puede tener números además de letras.
Ahora vamos a hacer
repetir 20 [10circuazar]
Como es lógico, ven que durante 20 veces los 10 círculos aparecen y desaparecen,Este es el fundamento de las animaciones. Veamos una
¿Recuerdan la fórmula de la parábola ?
y= x^2
Si la modificamos y hacemos el valor de la altura :alt =(40000 – y)/ 200, para:
x= -200, y= 40000 alt = 0
x= 0 y = 0 alt = 200
x= 200 y = 40000 alt = 0
cero para x = 0, y =200 y para x = 200 y volverá a ser 0. La curva que pinta la linea que vaya siguiendo esos puntos sera la trayectoria de un proyectil lanzado con un cañon en un cierto ángulo.
Vamos a verlo.
Observen que hemos indentado, (un anglicismo, que significa mover un bloque de texto hacia la derecha insertando espacios o tabuladores, para así separarlo del margen izquierdo y mejor distinguirlo del texto adyacente, un poco el texto para que se vea con un simple vistazo aquellos comandos que están dentro del comando repetir.
Esta practica facilita la comprension del programa al resaltar con sencillez el bloque de comandos que se repite, Es muy habitual entre los programadores para facilitar la lectura de sus programas y conviene seguirla.
Pero quizá lo que queramos es solo moverse al círculo. Veamos lo que pasa si se borra la pantalla antes de hacer un nuevo circulo
Como ven no siempre se ve el circulo lleno. Ocurre que la imagen que vemos también son dibujos proyectado uno detrás de otro, si le dibujo que se guarda, es cuando hemos limpiado la pantalla la imagen se pierde, por ello vamos a limpiar la pantalla cada tres ciclos. Para ello vamos a poner un contador nuevo, que cada vez que alcance el valor 3 borra la pantalla y vuelva a ponerse con valor uno, así damos mas probabilidades de que la imagen que guarde el ívídeo tenga la bala pintada en ese momento.
Comando si
Para lo que deseamos hacer necesitamos conocer un nuevo comando que es de la misma familia que repite, o sea comandos condicionales. comandos que se ejecutaqn en determinadas circunstancias sólamente.
El comando repite hace una cosa, hasta que la ha repetido a las veces que se le ha mandado, cuando llega ahó no hace nada. El comando si, hará lo que se le mande una sola vez. si es cierta una condición que se le imponga, si la condición es falsa, como hace repite cuando llega a las veces que le hemos mandado, no hace nada. La sintaxis es por tanto;
si condicion [ com1 com2 ,…]
Donde
si es el nombre del comando
condicion, es aquello que tiene que ser cierto para que se ejecute
[ com1 com2 ,…] son los comandos que queremos que se efectúen cuando se cumple la condición
Pongamos un ejemplo.
Hacemos x = 1 y luego repetimos 20 veces lo
siguiente:
si x>3 gira a la derecha 30 º y avanza 20
si x=3 avanza 30
si x<3 (gira a la izquierda 45º y avanza -40 (retrocede 40)
aumente x en 1
Lo programamos y probamos
haz «x 1
repite 20 [
si :x<3 [ gd 30 av 20 ]
si :x=3 [av 30]
si :x>3 [gi 45 av -40 haz «x 0]
haz «x :x+1
]
Observen que figuras tan complejas se pueden hacer con solo unas cuantas instrucciones, Traten de entender cada uno de los trazos teniendo en cuenta que X unmenta de valos¡r 1 hasta que llega a 3 y luego pasa a 0 y que los trazos parten del lado izquierdo,
Bien sabido esto volvamos a nuestra función y pongamos que cada tres repeticiones borre la pantalla, por otra parte tampoco necesitamos pintar circunferencias que exige 360 pasos cada una sino simplemente puntos suficientemente gordos por ejemplo los que produce pong 15 av 1
Abre el programa una descripción(no obligatoria, pero si conveniente), de los que hace que aquí me ha llevado cuatro líneas Luego viene una parte que se denimino
; variables y parametros ………….
En esta parte se suelen dar los valores iniciales que tendran las variables y parámetros que utilizaremos posteriormente. Son estas variables globales puesto que van a influir en lo que realmente el se programa que empieza en la parte que he llamado bucle porque en el 90% de los casos esalgo que se repite varias veces
A continuacion viene un zona que he llamado
; preparar ……………………………..
en la que se hacen todos los preparativos previos al bucle, en este caso ha sido, indicar el grososr y el color del pincel, y posicionar la tortuga en el sitio de partida. Lo habitual es tener que hacer algo antes de hacer el grueso del programa
Por fin viene la parte principal del programa que he llamado
; bucle …………………………..
Este es el meollo del programa. Aquí hemos hecho muchas cosas la primara es borrar una de cada tres vueltas todo lo pintado anteriormente, lo haga cada tres para tener mas probabilidades que la imagen que guarda el vídeo- Podíamos haberlo hecho cada vez o cada seis por ejemplo, en el primer caso observamos que las perdidas de la imagen del punto eran muy frecuentes y en el asegunda el punto era demasiado largo al haberse pintado varios, Optée por un valor intermedio. Despues de reiniciar con nuestra función vuelvo a borrar la tortuga (ot) para que no moleste.
Si hubiera utilizado en vez de reini simplemente bp no haría falta poner el grosor y el color del lápiz porque bp no los modifica, pero de este detalle me he dado cuenta cuando ya lo había hecho y me dió pereza cambiarlo.
Esto demuestra que para conseguir un mismo objetivo hay muchos caminos, Lo que caracteriza a un buen programador es que sabe encontrar el camino mas sencillo, que menos recursos exige a la máquina, y en consecuencia es mas rápido.
A continuación calculo la Y de la gráfica que llamo :alt y posiciono la tortuga en el punto (x, alt). hago una pausa para que la cosa vaya un poco mas lenta, el repite 100 solo repite el pintar 100 veces el punto pero si no lo pongo ahora el gráfico va demasiado tiempo. Es normal y corriente en las animaciones inventar algún truco semejante para conseguir que las cosas ocurran a un ritmo adecuado.
Por último aumento el valor de x para pintar el punto siguiente y el valor de i que controla el borrado si i alcanza el valor 4 lo vuelvo a poner a 0 para que vuelva a borrar en otra ocasión.
Por ejemplo es de buen programador pitar un punto con PONG 25 av 1 que pintar un circulo y rellenarlo pues esto son dos instrucciones y lo otro mas de 360. Claró, que luego todo ocurre tan r´pido que tenemos que hacer un truco par frenarlo, pero mientras hacer un truco para frenar es terriblemente fácil el conseguir que algo vaya mas rápido es muchisímo más difícil. El resultado es tal como se ve al inicio del programa.
Repaso
Pronto pondré aquí un enlace a todos los comandos que vayamos presentando así como a todos los comandos particulares y programas que vayamos recolectando. Aconsejo que los repasen con el fin de que se vayan quedando los nombres y lo que hacen, pues es muy importante al menos saber su existencia y acostumbrarse a saberlos encontrar para cuando los necesitemos
Aparte hemos aprendido o ejercitado:
- Editar y modificar un comando personal
- Documentar un comando y un programa, Uso de los comentarios, Comando ;
- Salvar definitivamente y el trabajo de una sesión
- Posicionar la tortuga en cualquier punto de la pantalla
- Manejar el número PI
- Rellenar cualquier curva cerrada con los comandos poncr y rellenar
- Manejo de las cuatro reglas matemáticas, suma, resta , multiplicación y división
- Trucos para frenar un programa que va demasiado rápido.
- Uso del Comando condicional si
- Uso de las condiciones igual mayor y menor
- Estructura del 90% de los programas. Variables, Preparacion, bucle
Y sobre todo a LUCHAR, cuando no sabemos hacer algo dar vueltas al asunto, segundo cbuscar en Internet y por último preguntar a alguien, Os recuerdo ese proverbio chino sobre la enseñanza.
“Lo que oigo, lo olvido; lo que veo, lo recuerdo; lo que hago, lo aprendo”
Como siempre pongo un reto. Con lo que sabes, si no igual, podéis hacer algo que se asemeje a esto. A ver si logras hacerlo o al menos acercarte a como es este dibujo. ¿Creías cuando empezaste que en dos lecciones ibas al menos a poder intentar hacer un dibujo así?
Félix Maocho
No hay comentarios aún.
Deja una respuesta