Google+ Seguidores

lunes, 2 de octubre de 2017

Dibujando con Python y Turtle

Introducción:

Siempre e querido aprender a dibujar, siempre e admirado a las personas que con un lápiz y un papel, crean obras de arte. Todo el tiempo me pregunto ¿Como lo hacen?, yo e intentado aprender, enserio, e tratado, pero lamentablemente, no es un don con el que cuente.

Pero, quien dice que no puedo programar mi propio dibujo.

Sí, así es, esta hermosa "Estrella" la e hecho con python y el modulo Turtle, con menos de 11 lineas de código, sorprendente ¿Verdad?.

En el día de hoy te daré una breve introducción del modulo Turtle, el cual nos permite crear gráficos usando una tortuga como lápiz virtual.

Dibujando con Python y Turtle:

Como e dicho anteriormente, hoy les mostrare como funciona el modulo Turtle, el cual se encuentra en la librería estándar de Python, por lo cual no debemos descargar ningún archivo externo.

Para entender las funciones básicas de movimiento, podemos crear un sencillo ejemplo, dibujemos un simple cuadrado de la sguiente manera:

#Importamos la librería turtle
import turtle
#Procedimiento para crear el cuadrado
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.done()

El resultado quedaría algo así:


Fascinante, ¿Cierto?, veamos que a sucedido aquí, paso a paso.

Lo primero que hacemos es importar el modulo Turtle, esto nos permite usar todos sus métodos y funciones, luego de esto usamos repetidamente dos métodos, los cuales son forward y left, el método forward le dice al lápiz virtual que se mueva 100 píxeles hacia delante, mientras que el método left le dice al lápiz virtual que gire 90 grados hacia la izquierda, este procedimiento se repite 4 veces, lo cual da como resultado un cuadrado.

Antes de continuar quisiera comentar que, en este sencillo programa, estamos repitiendo mucho código, esto lo podemos evitar usando un bucle for, de esta manera nos quedaría algo así:

import turtle

for x in range(0, 4):
turtle.forward(50)
turtle.left(90)

turtle.done()

Excelente, hemos logrado crear un cuadrado de una manera muy fácil, pero estoy muy seguro, de que ustedes quieren ver algo un poco más interesante, veamos el siguiente ejemplo:

#Más cuadrados
grados = 0
turtle.speed(15)
for x in range(1, 40):
for x in range(0, 4):
turtle.forward(50)
            turtle.left(90)
turtle.left(grados + 10)

El resultado del código anterior seria el siguiente:



Como pueden observar, esta obra de arte, por muy compleja que se vea, lo único que hace el programa es dibujar 40 cuadrados unidos, que en cada iteración giran a la izquierda unos 10 grados.

En este ejemplo también podemos observar otro método de turtle, el cual es speed, este método nos permite especificar la rapidez con la que el puntero dibuja.

Es un dibujo bonito, pero creo que le hace falta un poco de color, ¿Como podríamos pintar esta obra de arte?, veamos el siguiente ejemplo:

turtle.color('red', 'blue')
turtle.begin_fill()
grados = 0
turtle.speed(15)
for x in range(1, 40):
for x in range(0, 4):
turtle.forward(50)
            turtle.left(90)
turtle.left(grados + 10)
turtle.end_fill()

Resultado:



Podemos ver que no solo la linea del lápiz es de color, si no que también el relleno, esto se logra con el método begin_fill, el cual podemos finalizar con el método end_fill.

Los colores los podemos especificar con el método color, en el cual el primer parámetro es el color del lápiz y el segundo el color del relleno.


Pero... ¿Donde está la tortuga?.

Desde hace un rato hemos estado hablando de una tortuga, pero ¿Donde está?.

Como hemos podido observar, el lápiz virtual tiene forma de la punta de una flecha, si quisiéramos podríamos cambiarla, y eso es lo que haremos, para esto, podemos usar el método shape, y pasarle como parámetro la forma que nos gustaría que tuviera el lápiz virtual. Veamos un ejemplo:

import turtle
turtle.color('green')

turtle.shape('turtle')

turtle.forward(100)
turtle.done()

Resultado:


Como resultado tenemos una tortuga verde dibujando, genial ¿Verdad?.

Un hábitat para nuestra tortuga.

En ocasiones, tendremos la necesidad de cambiar el color de fondo del hábitat de nuestra tortuga, esto lo podemos lograr creando una instancia del objeto turtle.Screen, con la cual podremos cambiar los elementos de la interfaz gráfica. Veamos un ejemplo:


import turtle
window = turtle.Screen()
window.bgcolor("blue")
turtle.color('green')
turtle.shape('turtle')
turtle.forward(100)
window.exitonclick()
turtle.done()

Resultado:


Como podemos ver, ahora el hábitat de nuestra tortuga es de color azul, esto lo especifico con el método bgcolor de la instancia del objeto Screen de turtle, también podemos observar el método exitonclick, que le dice a la interfaz que cuando se haga click en cualquier parte, se cierre, tu mismo puedes probarlo.

Dos tortugas, son mejor que una.

Podemos tener más de un lápiz virtual, esto lo podemos lograr creando instancias del objeto Turtle, así, podremos manejar de manera diferente a distintas tortugas dibujantes, Veamos un ejemplo:

import turtle

luis = turtle.Turtle()
luis.shape('turtle')
luis.color('green')
luis.forward(100)

angel = turtle.Turtle()
angel.shape('turtle')
angel.color('blue')
angel.right(180)
angel.forward(100)


Resultado:


Increíble, ahora tenemos dos tortugas, Luis y Angel, a las cuales tratamos como objetos diferentes, las dos tortugas tienen colores y toman direcciones diferentes, si quisieras, podrías crear a tantas tortugas como quieras.

Bueno, hemos conocido los métodos básicos que nos permitirán manejar el modulo Turtle.

Aun quedan mucho métodos dentro de Turtle, los cuales, podremos ver en artículos posteriores, y ademas te podre enseñar a dibujar la estrella que e mostrado al principio del articulo.

Si quieres ver más artículos referente a el modulo Turtle, déjamelo saber en los comentarios, nuevamente fue un placer compartir mis conocimientos con ustedes, hasta la próxima.


No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .